异或运算
展开全部
两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
给出两个整数 x 和 y,计算它们之间的汉明距离。
示例:
输入: x = 1, y = 4
输出: 2
解释:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑
上面的箭头指出了对应二进制位不同的位置。
先将两个数异或运算得到n,那么n里面1的个数就是结果,如果n不为0,那么n至少有一位是1。如果n减1,那么原来处在整数最右边的1就会变为0,原来在1后面的所有的0都会变成1。其余所有位将不会受到影响。这样右边这部分的&运算结果就为0,然后循环
1.按位与(&)【有0则0】
运算规则:0&0=0;0&1=0;1&0=0;1&1=1;
用途:
(1)清零。如果想将一个单元清零,只需与一个各位都为0的数值相与即可。
(2)取出一个数的指定位。与上 一个指定位为1,其余位为0的数值即可。
例:设x=11101100,取x的低四位。令x&00001111=00001100
2.按位或(|)【有1则1】
运算规则:0|0=0;0|1=1;1|0=1;1|1=1;
用途:
(1)常用来对某些位置1。或上 一个指定位为1,其余位为0的数值即可。
例:设x=11101100,将x的低四位置1。令x|00001111=11101111
3.异或(^)【同0异1】
运算规则:0 0=0;0 1=1;1 0=1;1 1=0;
用途:
(1)使特定位翻转,异或上 一个要翻转位数为1,其余位为0的数值即可。
例:设x=11101100,将x的低四位翻转。令x^00001111=11100011
(2)与0异或,保留原值。
(3)基于异或运算,不引用新变量,交换两个变量的值
a=a^b;b=a^b;a=a^b(基于加减法还有:a=a+b;b=a-b;a=a-b)
转自[ https://www.cnblogs.com/alatar16/p/8994738.html] 爆裂时空博客
给出两个整数 x 和 y,计算它们之间的汉明距离。
示例:
输入: x = 1, y = 4
输出: 2
解释:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑
上面的箭头指出了对应二进制位不同的位置。
先将两个数异或运算得到n,那么n里面1的个数就是结果,如果n不为0,那么n至少有一位是1。如果n减1,那么原来处在整数最右边的1就会变为0,原来在1后面的所有的0都会变成1。其余所有位将不会受到影响。这样右边这部分的&运算结果就为0,然后循环
1.按位与(&)【有0则0】
运算规则:0&0=0;0&1=0;1&0=0;1&1=1;
用途:
(1)清零。如果想将一个单元清零,只需与一个各位都为0的数值相与即可。
(2)取出一个数的指定位。与上 一个指定位为1,其余位为0的数值即可。
例:设x=11101100,取x的低四位。令x&00001111=00001100
2.按位或(|)【有1则1】
运算规则:0|0=0;0|1=1;1|0=1;1|1=1;
用途:
(1)常用来对某些位置1。或上 一个指定位为1,其余位为0的数值即可。
例:设x=11101100,将x的低四位置1。令x|00001111=11101111
3.异或(^)【同0异1】
运算规则:0 0=0;0 1=1;1 0=1;1 1=0;
用途:
(1)使特定位翻转,异或上 一个要翻转位数为1,其余位为0的数值即可。
例:设x=11101100,将x的低四位翻转。令x^00001111=11100011
(2)与0异或,保留原值。
(3)基于异或运算,不引用新变量,交换两个变量的值
a=a^b;b=a^b;a=a^b(基于加减法还有:a=a+b;b=a-b;a=a-b)
转自[ https://www.cnblogs.com/alatar16/p/8994738.html] 爆裂时空博客
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
晓网科技
2024-10-17 广告
2024-10-17 广告
ZigBee作为一项新型的无线通信技术,其具有传统网络通信技术所不可比拟的优势,既能够实现近距离操作,又可降低能源的消耗。又如,相较于蓝牙等无线通信技术,ZigBee无线通信技术可有效降低使用成本, 即便数据处理的速率并不高,然而,值得肯定...
点击进入详情页
本回答由晓网科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询