1.位运算符
要做位运算首先要将数据转换为二进制。
(1)&为与运算
有0则0,例如3 & 4:

(2)|位或运算
有1则1,例如3 | 4:

(3)^位异或运算
相同则0,不同则1。例如3 ^ 4:

^的特点:一个数据对另一个数据异或2次,该数本身不变。如:

(4)按位取反运算符
0变1,1变0,例如~3:

(5)<<:左移
左边最高位丢弃,右边补齐0。例3 << 2:

由此得出结论:<<符就是把左边的数据*2的移动次幂。
(6)>>:右移
最高位是0则左边补齐0,最高位是1则左边补齐1。
同理(5)可得:>>符就是把左边的数据/2的移动次幂。用-24 >> 2的例子来说明吧:

(7)>>>:无符号右移
无论最高位是0还是1,左边补齐0。 例:-24 >>> 2

网友评论