位运算符简述

运算符 操作 复合形式
~ 按位一元取反
& 按位与 &=
I 按位或 =
^ 按位异或 ^=
<< 左移 <<=
>> 右移(带符号) >>=
>>> 无符号右移 =

位与运算符(&)

两个数进行位与计算,每一个比特位依次计算,只有数值位对应的两个二进制值都是1的时候才是1.
其实这个和与运算是类似,只不过这个用到了二进制中的每一位上。
与

位或运算符(|)

同理与,位或计算是只要数值位对应的两个二进制值任意一个是1的时候就是1。

或

位异或运算符(^)

同理与和或,位异或计算是只有数值位对应的两个二进制值不相等时是1,类似与非。
在这里插入图片描述

取反运算符(~)

一个数进行位取反运算,每一个比特位依次取反,即相当于1为0,0为1。

取反

左移(<<)

位左移运算可以说是一个数所有数值位的二进制像左移动确定位数。
注:

  1. 所有比特位按指定的位数进行左移;
  2. 空白位用0补充;
  3. 超出整型存储边界都舍弃。
    位左移运用计算总结一个数位左移1(x<<1)后在整型存储范围内(即没有舍弃部分的时候) 相当于将这个数 乘2(×2)
    答案

右移(>>)

位右移运算可以说是一个数所有数值位的二进制像右移动确定位数。
注:

  1. 所有比特位按指定的位数进行右移;
  2. 右移分无符号整数和有符号整数:无符号整数空白位用0补充;有符号整数整数空白位用符号位数值补充(即看符号位是0还是1);
  3. 超出整型存储边界都舍弃;

位右移运用计算总结一个数位右移1(x>>1)后在整型存储范围内(即没有舍弃部分的时候) 相当于将这个数 除2(÷2);若位右移导致结果<1时,则无符号整数的结果为0,有符号的结果为-1;

答案

常见结论:

- 两个数 ^ 得到的结果,再 ^ 其中任意一个数,能得到另一个数。
- 两个相等的数 ^ 得到的结果为0;
- 0和任意一个数 ^ 得到的都是这个数本身。
- x & 1 可以判断x最后一位是不是1。
- x & (x-1) 可以消除x最后一位的1。
- i & j == 0 可以知道 i 的第 j 位不是1。
- (i>>j)& 1 == 1 可以知道 i 右移 j 位后等于1。

猜你喜欢

转载自blog.csdn.net/qq_45481524/article/details/107434329
今日推荐