c语言用异或清零,C语言异或操作的妙用
如果想要交换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语言异或操作的妙用相关推荐
- c语言用位运算将一个数清零,C语言学习笔记_位运算
C语言学习笔记_位运算 知识点记录 基本位运算 按位与:全1为1,见0为0:与1相与无变化,与0相与变为0:可用于特定位清零 按位或:见1为1,全0为0:与1相或变为1,与0相或无变化:可用于特定位置 ...
- 秒表清零c语言程序,显示的秒表 C语言程序
显示的秒表 C语言程序 源程序代码: //名称:用1602LCD设计的秒表 //说明:首先按下K1键时开始计时,自此按下时暂停,第三次按下时继续累积计时,再次按下时停止计时,K2键用于清零秒表. // ...
- 存储器块清零c语言版,存储器块清零实验报告
有关单片机存储器块清零实验的试验报告 存储器块清零实验报告 班级: 11级计科班 姓名:苏靖 学号:1120070544 日期:2012-12-19 一.实验目的: 1.掌握存储器读写方法 2.了解存 ...
- 存储器块清零c语言版,存储器块清零实验
版权所有 实验一 存储器块清零 一.实验目的 1.掌握存储器读写方法: 2.了解存储器的块操作方法. 二.实验说明 本实验指定某块存储器的起始地址和长度,要求能将其内容清零.通过该实验学生可以了解单片 ...
- 存储器块清零c语言版,存储器块清零实验报告.doc
存储器块清零实验报告 篇一:实验1 存储器块清零 实验一 存储器块清零 一.实验目的 1. 掌握存储器读写方法 2. 了解存储器的块操作方法 二.实验设备 1.伟福Lab6000增强型开放式通用实验/ ...
- C语言指针使用过程中 不需要清零,C语言中指针使用常见问题及解决办法.pdf
. - - 自 · - j 1- j w - m - - [ - № 实用第一 智慧密集 C语 i觅 及 捧法l j||? l .. 一 摘 要:讲述 了在 c语言中指针使用时所 出现的一些常见问题 ...
- 华清远见C语言笔试题,华清远见C语言学习笔记五
/* * test.c * * Created on: Jul 4, 2012 * Author: 孙旭 * 华清远见实验室 */ /******1*****/ #include int ...
- 按键清零是0xff吗c语言,msp40_c语言.docx
msp40_c语言 实验目的巩固编写和调试C语言程序的方法:了解简单电路的控制方法实验任务简单电子表的设计用8 个发光二极管以秒为单位显示时间值,按下面步骤完成一个简单电子表的设计:1)硬件连线:用跳 ...
- 8.裸板--C语言下的寄存器的读写置位清零操作
从CPU的角度来看,外设的寄存器跟通用寄存器操作一样,对它们的地址进行读写移位等操作即可进行配置读取写入等动作. 通用寄存器有15个 寄存器名字 Reg# APCS 意义 R0 a1 工作寄存器 R1 ...
最新文章
- Linux下用于查看系统当前登录用户信息的4种方法
- 荒唐!985高校规定研究生上课迟到两次就扣 500 元国家助学金!
- mysql5.7跳过gitd_MySQL5.7在线开启/关闭GTID
- Android组件之BroadCast简单实践
- C++有用的字符函数库
- T4((Text Template Transformation Toolkit))模版引擎之基础入门 C#中文本模板(.tt)的应用...
- 什么是Azure Data Lake
- PAT之STL:vector、set、map、stack、queue
- php获取当前文件夹下所有图片大小,PHP获取文件夹大小函数用法实例
- 【无线通信协议笔记】蓝牙篇:传输速率
- 计算机三级 信息安全技术 题纲
- 写论文修改word标题的编号1/1.1/1.1.1/1.1.1.1
- 程序员经常浏览的网站
- 完美安装运行Xcelsius 2008 SP3解决方案
- 某大厂程序员吐槽外包员工是大爷
- 基于VMWare虚拟机搭建Linux集群
- 按字符串属性值对对象数组进行排序
- linux中shell脚本批处理命令
- linux被病毒感染 CPU使用很高
- TensorFlow进阶--实现学习率随迭代次数下降
热门文章
- java 鱼刺图_使用java实现鱼刺图
- 基于jsp+ssm+mysql实现简单的物流快递管理系统
- ps选区移动到别的图像文件
- 瑞星杀毒助手 for win 2000/xp升级到0.1.0020版
- Window批处理自动打包升级包
- 【C语言】文件的打开和关闭,文件的顺序读写
- Navicat连接Linux服务器的mysql出现连接不上的问题
- 基于JAVA直播管理系统计算机毕业设计源码+系统+lw文档+部署
- 机器学习基础:极大似然估计高斯参数
- 【Java】多个pdf合并成一个pdf(Itext)