位运算符的概念和使用

逻辑运算符

&&:逻辑与,全真才为真。
若第一个操作数为假,肯定为假,就不判断第二个了。
||:逻辑或,有真即为真。
若第一个操作数为真 ,肯定为假,就不判断第二个了。
:逻辑非。
用来反转操作数的逻辑状态。例true取非后为false。

位运算符:

操作数在计算机中以补码形式存在,int为4字节 (32)位。
取反:~
将二进制形式的操作数每一位都取反,即0变成1,1变成0。例

  • 8(即0…000 1000),取反后真值为-9(补码为:1111…1111 0111)

与:&
全1则为1。参与运算的两个操作数,相应的二进制位进行与运算。例:

  • 5&11即0101&1011,结果为1
  • 1&-1即(1111&1111,结果为-1
  • 1&1即(1111&0001,结果为1

或:|
有1则为1.例:

  • 5|11即(0101|1011),结果为15

异或:^
相同为0,相异为1。例:

  • 5^ 11即(0101^1011),结果为14

保留符号位的右移:>>
将一个操作数的各个二进制位全部右移若干位,低位被舍弃,左边空出的用符号位填充。例:

  • 5>>1为2
  • 10>>n 等价于10/(2^n),结果截断小数位
  • -1右移多少位仍然为-1

不保留符号位的右移:>>>
将一个操作数的各个二进制位全部右移若干位,低位被舍弃,左边空出的用0填充。例:

  • 5>>>1为2
  • -9>>>1,结果为2147483643即(01111111 11111111 11111111 11111011)

保留符号位的左移:<<
将一个操作数的各个二进制位全部左移若干位,舍弃高位溢出的数,右边空出的用0填充。例:

  • 5<<1为10

应用:

判断奇偶

奇数的二进制最后一位一定为1;偶数的二进制最后一位一定不为1;
0x表示16进制,0x1即0x00000000 00000000 00000000 00000001
操作数& 0x1,结果为1时为奇数。( 位运算效率高)

求余

a % 2^n = a & (2n-1)
例如:14%8=1110 & 0111 = 0110,即为6

hash

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41571459/article/details/113983791
今日推荐