如果想要交换2个变量,一般的做法是引入第三个变量,

例如,

temp = a;

a = b;

b= temp;

这样2个变量中的值就实现了交换。那能不能不引入其他变量就可以实现变量值的交换呢?答案是肯定的。

用异或操作可以实现,有2种实现方法,本质上是一样的。

法1:

#include

int main()

{

int a,b;

while(1)

{

scanf("%d %d",&a,&b);

a = a^b; //(1)

b = a^b; //(2)

a = a^b; //(3)

printf("%d %d\n",a,b);

}

return 0;

}

法2:

#include

int main()

{

int a,b;

while(1)

{

scanf("%d %d",&a,&b);

b = a^b;//(1)

a = a^b;//(2)

b = a^b;//(3)

printf("%d %d\n",a,b);

}

return 0;

}

因为2种方法本质一样,就方法一进行一下证明。

异或操作满足结合律和交换律,且由异或操作的性质知道,对于任意一个整数a^a=0;

证:(第(2)步中的a) a = a^b = (将第(1)步中的b代入b) a^(a^b) = b;

(第(3)步中的b)b = a^b = (将第(1)步中的b代入b,将第(2)步中的a代入a) a^b^a^a^b = a^a^a^b^b = a;

证毕

c语言用异或清零,C语言异或操作的妙用相关推荐

  1. c语言用位运算将一个数清零,C语言学习笔记_位运算

    C语言学习笔记_位运算 知识点记录 基本位运算 按位与:全1为1,见0为0:与1相与无变化,与0相与变为0:可用于特定位清零 按位或:见1为1,全0为0:与1相或变为1,与0相或无变化:可用于特定位置 ...

  2. 秒表清零c语言程序,显示的秒表 C语言程序

    显示的秒表 C语言程序 源程序代码: //名称:用1602LCD设计的秒表 //说明:首先按下K1键时开始计时,自此按下时暂停,第三次按下时继续累积计时,再次按下时停止计时,K2键用于清零秒表. // ...

  3. 存储器块清零c语言版,存储器块清零实验报告

    有关单片机存储器块清零实验的试验报告 存储器块清零实验报告 班级: 11级计科班 姓名:苏靖 学号:1120070544 日期:2012-12-19 一.实验目的: 1.掌握存储器读写方法 2.了解存 ...

  4. 存储器块清零c语言版,存储器块清零实验

    版权所有 实验一 存储器块清零 一.实验目的 1.掌握存储器读写方法: 2.了解存储器的块操作方法. 二.实验说明 本实验指定某块存储器的起始地址和长度,要求能将其内容清零.通过该实验学生可以了解单片 ...

  5. 存储器块清零c语言版,存储器块清零实验报告.doc

    存储器块清零实验报告 篇一:实验1 存储器块清零 实验一 存储器块清零 一.实验目的 1. 掌握存储器读写方法 2. 了解存储器的块操作方法 二.实验设备 1.伟福Lab6000增强型开放式通用实验/ ...

  6. C语言指针使用过程中 不需要清零,C语言中指针使用常见问题及解决办法.pdf

    . - - 自 · - j 1- j w - m - - [ - № 实用第一 智慧密集 C语 i觅 及 捧法l j||? l .. 一 摘 要:讲述 了在 c语言中指针使用时所 出现的一些常见问题 ...

  7. 华清远见C语言笔试题,华清远见C语言学习笔记五

    /* * test.c * *  Created on: Jul 4, 2012 *      Author: 孙旭 * 华清远见实验室 */ /******1*****/ #include int ...

  8. 按键清零是0xff吗c语言,msp40_c语言.docx

    msp40_c语言 实验目的巩固编写和调试C语言程序的方法:了解简单电路的控制方法实验任务简单电子表的设计用8 个发光二极管以秒为单位显示时间值,按下面步骤完成一个简单电子表的设计:1)硬件连线:用跳 ...

  9. 8.裸板--C语言下的寄存器的读写置位清零操作

    从CPU的角度来看,外设的寄存器跟通用寄存器操作一样,对它们的地址进行读写移位等操作即可进行配置读取写入等动作. 通用寄存器有15个 寄存器名字 Reg# APCS 意义 R0 a1 工作寄存器 R1 ...

最新文章

  1. Linux下用于查看系统当前登录用户信息的4种方法
  2. 荒唐!985高校规定研究生上课迟到两次就扣 500 元国家助学金!
  3. mysql5.7跳过gitd_MySQL5.7在线开启/关闭GTID
  4. Android组件之BroadCast简单实践
  5. C++有用的字符函数库
  6. T4((Text Template Transformation Toolkit))模版引擎之基础入门 C#中文本模板(.tt)的应用...
  7. 什么是Azure Data Lake
  8. PAT之STL:vector、set、map、stack、queue
  9. php获取当前文件夹下所有图片大小,PHP获取文件夹大小函数用法实例
  10. 【无线通信协议笔记】蓝牙篇:传输速率
  11. 计算机三级 信息安全技术 题纲
  12. 写论文修改word标题的编号1/1.1/1.1.1/1.1.1.1
  13. 程序员经常浏览的网站
  14. 完美安装运行Xcelsius 2008 SP3解决方案
  15. 某大厂程序员吐槽外包员工是大爷
  16. 基于VMWare虚拟机搭建Linux集群
  17. 按字符串属性值对对象数组进行排序
  18. linux中shell脚本批处理命令
  19. linux被病毒感染 CPU使用很高
  20. TensorFlow进阶--实现学习率随迭代次数下降

热门文章

  1. java 鱼刺图_使用java实现鱼刺图
  2. 基于jsp+ssm+mysql实现简单的物流快递管理系统
  3. ps选区移动到别的图像文件
  4. 瑞星杀毒助手 for win 2000/xp升级到0.1.0020版
  5. Window批处理自动打包升级包
  6. 【C语言】文件的打开和关闭,文件的顺序读写
  7. Navicat连接Linux服务器的mysql出现连接不上的问题
  8. 基于JAVA直播管理系统计算机毕业设计源码+系统+lw文档+部署
  9. 机器学习基础:极大似然估计高斯参数
  10. 【Java】多个pdf合并成一个pdf(Itext)