运用异或运算实现两个数不通过中间变量交换值的原理分析
或许对于像我现在这样的初学者很多都没见过这个符号 ^
这个是个异或运算的符号,好的,我们现在开始分析它的运行原理!
异或运算的知识请点击此连接后了解
http://baike.baidu.com/view/1452266.htm
将i和j的初始值给2进制化后
分别为
10 -- 0
5 -- 1
2 -- 0
110的二进制就为1010
-----------------------------
5 -- 1
2 -- 0
1
5的二进制就为 101
第一步:
i=i^j;
好了,我们将2个数都转换成了二进制后
在把他们异或运算下
1010
0101 --- 补0
1111 --- 或运算的结果
再把二进制的1111转换成十进制的
1*2^3+1*2^2+1*2^1+1*2^0
8+4+2+1=15
现在的i的值就等于15了
第二步:
j=i^j;
1111
0101
1010
再把二进制的1010转换成十进制的
1*2^3+0*2^2+1*2^1+0*2^0
8+0+2+0=10
现在j的值就等于10了
第三步:
i=i^j;
1111
1010
0101
现在i的值就等于5了
最后就成功的将i和j的值给交换了!
转载于:https://www.cnblogs.com/jskbk/p/6060880.html
运用异或运算实现两个数不通过中间变量交换值的原理分析相关推荐
- 常用技巧 —— 位运算 —— 异或运算实现两个数的交换
[概述] 交换变量时,通常是借助一临时变量来赋值实现 void exchange(int a,int b) {int temp;temp=a;a=b;b=temp; } 当采用异或运算时,实现两变量交 ...
- 异或运算交换两个整数
异或运算有两个特性: 1.一个数异或本身恒等于0,如5^5恒等于0: 2.一个数异或0恒等于本身,如5^0恒等于5. 基于此,交换操作如下: a=a^b; b=b^a; a=b^a;
- c语言异或实现交换原理,使用异或运算符实现两个数交换原理
使用异或运算符实现两个数交换原理 子不语 • 2019 年 12 月 21 日 使用异或运算符实现两个数交换原理 可以使用异或运算符实现两个数交换#include using namespace st ...
- 位运算求两个数的平均值
一直不理解位运算求两个数的平均值.参考网上资料后终于明白. 如下: 求两个数的平均值的算法:Avg = (ValueA & ValueB) + (ValueA ^ ValueB) >&g ...
- 【C/C++】异或操作巧妙实现两个数的交换操作
今天在看OpenGL加载TGA格式图像用作纹理的代码时,看到关于RGB(A)顺序转换的一行代码时,捉一开始感到很困惑,后来想了想,就是实现交换操作. 原始代码: texture->imageDa ...
- 使用异或运算交换两个任意类型变量
这篇文章中将使用C语言,实现交换两个任意类型变量的功能.说到任意类型用C让人感觉很难做,如果是C++则使用模板函数就轻松搞定: template<class T> inline void ...
- leetcode 371. 两整数之和(不用算术运算符实现两个数的加法:按位异或原理)
题目 https://leetcode-cn.com/problems/sum-of-two-integers/ 题解 按位异或:相同为0,不同为1 对于二进制的加法运算,若不考虑进位,则 1+1=0 ...
- 异或交换两个数的原理证明
算法 通过异或运算交换两个数 a ^= b b ^= a a ^= b 证明 由异或定义易得: 异或运算满足结合律, 交换律 x ^ x = 0 x ^ ...
- java 不用中间变量_java异或运算不使用中间变量交换两个数(Java版)详细分解...
Java的异或运算^,这个小不点"^"就是Java的异或运算符,其特性如下:真^假=真假^真=真 假^假=假 真^真=假,它却是说明了Java异或运算的基本法则,那就是:只要两个条 ...
最新文章
- 计算机视觉及机器学习论文、源代码合集
- 程序员吐槽_男子吐槽:35岁被裁都是低端程序员,有能力只会是一个新台阶
- 游戏AI研究(三):路径规划
- php ip处理函数,PHP取ip地址函数
- JustOj 1032: 习题6.7 完数
- Seata 与 Nacos Config配置中心整合_03
- php程序如何加密(php_screw)
- 开源 sql 代码提示工具_有关如何计划开源活动的提示
- Windows蓝屏之后,DUMP分析教程
- 深入解读Redis之数据类型解析-SDS
- 拉黑和删除的意义一样吗?
- 窃密软件访问的文件和注册表
- 前端笔记:Grid布局
- [003] 嵌入式学习:创建工程模板——使用STM32CubeMX
- 基于32单片机的16通道ADC的数据采集
- 大一上学期计算机考试笔记,计算机一级考试重点笔记
- 【数据库09】数据库系统体系结构
- python中是区分大小写的
- (elementui-图片预览)el-dialog+el-image图片显示问题
- 手机通过笔记本电脑无线网卡联网
热门文章
- git merge 回退_git+vscode进行版本控制
- 组件服务-计算机-我的电脑出现红色向下箭头的解决办法
- Eclipse的.properties文件输出中文成unicode编码
- sql 整改措施 注入_记一次Sql注入 解决方案
- merge规则 python_用Python处理PDF
- 文字识别(三)--文字定位与切割
- 1至100之和用c语言表达方式,C语言菜鸟基础教程之求1到100的和
- mobaxterm为什么无法连接_为什么 TCP 建立连接需要三次握手
- Spring 框架蕴含的设计思想
- Hbase compact入门