其他分享
首页 > 其他分享> > 位运算

位运算

作者:互联网

例题:

 

根据要求如果想让某数的第 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