免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
免責事項:この記事はブロガーであるジョー・ホワイト-元労働許可証のうち、それらをノックするための単一の単語は、ブロガーなく複製してはならない、あなたのサポートをありがとう。
ブログのこのシリーズは、商業目的のために使用されていない共有する経験の交換のみを行います。この記事の不備は、メッセージを残してください場合は、それは時間に変更されます。
データ交換のための04 Cコード
プログラムの導入:
/*
*Copyright (c) 2019.池州市集成电路可靠性分析与嵌入式研究实验室
*All rights reserved.
*摘要:程序功能,实现两个数的交换,要求列出较好的方法,并且列出时空复杂度。
*文件名称:数据交换.c
*文件标识:无
*
*当前版本:v1.0
*作者:乔勇刚
*完成日期:2019/09/08
*
*/
最初のステップ:2つの変数を定義し、それらに割り当て
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
/*定义两个变量并赋值*/
int a = 10; //给a分配一个地址,并且将10放在这个地址
int b = 50; //给b分配一个地址,并且将50放在这个地址
printf("a=%d,b=%d",a,b); //打印
printf("%p",&a);
system("pause");
}
1.プロセスにおける変数の定義は、コンパイラは、マスターチップアドレス空間を割り当てることができるようにすることである
。
2.printf( "A =%のDは、%D = B"、A、B);ここで=%d個の%は、予め-Dに対応左側の空間が充填されるのを待って、充填剤は、(a)は、Bは=%d個の%dは左側空間の背面に変数bに対応する第1の変数の後ろにあります。
データ交換を実装します。
/*正常的交换,幼儿园思维*/
/*评估时空复杂度 :时间复杂度+3,空间复杂度 +1*/
int temp = a;
a = b;
b = temp;
printf("a=%d,b=%d",a,b); //打印
データ交換方法:
/*小学生思维*/
/*时空复杂度=6,加法+3,赋值+3*/
a = a + b;
b = a - b;
a = a - b;
printf("a=%d,b=%d",a,b); //打印
/*使用+ * 都可以*/
a = a * b;
b = a / b;
a = a / b;
printf("a=%d,b=%d",a,b); //打印
= A + B、
三の段階で達成さ:
登録するメモリ領域から採取された1データ;
2レジスタに+ bを達成するために、
前記レジスタA + Bは、アドレスの値に戻されます。
データ交換の3つの方法:
/*大学生思维,采用异或 11,00 = 0,10,01=1 相异得 1 最安全*/
a = a ^ b; /* 采用异或做加密算法,加密函数和解密函数是同一个函数*/
b = a ^ b;
a = a ^ b;
あなたが自分自身を達成しようとすることができる多くの方法がある場合は、データ交換は主に、ここで紹介しています。