位运算
位运算
作用于整数类型的运算对象,对二进制数位进行运算。
位与:& 当且仅当两个运算对象都为1时,该位为1
1&1=1
1&0=0
0&1=0
0&0=0
例:255&128=128
位或:|当且仅当两个运算对象都为0时,该位为0
1|1=1
1|0=1
0|1=1
0|0=0
例:255|128=255
位取反:~将1置为0,将0置为1
~1=0
~0=1
例:~128=127
左移:<<
将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。
左边二进制位丢弃不包括1时, 左移1位相当于乘以2。
例:3(11)<<2=12(1100)
右移:>>
将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。
右移1位相当于除以2(整数除法)。
例:7(111)>>1=3(11)
位运算的性质
x^x=0:自己与自己异或一定为1
操作x的第j位(从左向右数,最右边是第0位):
x|(1<<j):将x的第j位设置为1
x&~(1<<j):将x的第j位设置为0
x^(1<<j):将x的第j位取反
(x>>j)&1:取x的第j位
a=b=a^=b:交换两个数
浙公网安备 33010602011771号