位运算
作者:互联网
例题:
根据要求如果想让某数的第 i 位变成0,那么需要&上一个第 i 位为0的数,因为0/1 & 0都等于0,但是其他位需要不变,则其他位需要& 1,因为0&1=1,1&1=1,&上1不会发生变化
如果想让某数的第 i 位变为1,那么需要 | 上一个第 i 位为1的数,以为0/1 | 1都等于1,但是其他位需要不变,则其他位需要 | 上1,因为0|0=0,1|0=1,|上0不会发生变化
异或上1就会变成相反的数,而异或上0则不变
代码如下:
运算符:
左移 <<
x 中所有的二进制位向左移动 j 个位置,而右边填入0
所有小于int的类型,移位以 int 的方式来做,结果是 int
x <<= 1等价于x *= 2
x <<= n等价于x *= 2^n
右移 >>
x中所有的位向右移动 j 个位置
所有小于 int 的类型,移位以 int 的方式来做,结果是 int
x >>= 1等价于x /= 2
x >>= n等价于x /= 2^n
&
如果参加&运算的是负数,则以补码的形式表示为二进制数,然后按位进行“与”运算。
用途:清零、取一个数中某些指定位
|
用途:用来对一个数据的某些位定值为1
^
异或(XOR),判断两个相应的位值是否为“异”,相异为1.
用途:使特定位翻转(要使哪几位翻转,将与其相异或的数的哪几位置1)
与0相异或,保留原值
交换两个值,不用临时变量
~
使某个整数的最低一位为0(a = a&~1)(~1 最后一位为0,其余都为1)
~比&优先级高
标签:某数,需要,运算,int,相异,异或 来源: https://www.cnblogs.com/jimeirj/p/15415268.html