1、先理解原码、反码、补码
正数的原码、反码、补码都一样。
举例 10为例。
关键是负数。
原码:
反码:最高位不变,其余的取反得到:1111 1111 1111 1111 1111 1111 1111 0101
补码:等于反码加1。 1111 1111 1111 1111 1111 1111 1111 0110
2、位运算
位运算符:操作数是整数,但是操作负整数时,用的是补码!!!!!
左移 << : 右边补0
右移 >>: 左边补0或1,如果原数最高位是1就补1,是0就补0.
无符号右移 >>> : 左边补0
按位与 & :二进制对应位置取与 ,同时为1才为1,否则为0
按位或 | :二进制对应位置取或 ,有一个为1就为1
按位异或运算 ^ :二进制对应位置取异或 ,两者不同才为1
按位取反 ~ :二进制对应位置取反 ,原来是1,变为0,原来是0变为1
说明:位运算符都是机器数直接运算的