java原码、反码、补码、位运算

1.对于有符号的数(java中的数都是有符号的)

二进制的最高位是符号位:0表示正数,1表示负数

正数的原码,反码,补码都一样

负数的反码=它的原码符号位不变,其它位取反

负数的补码=它的反码+1

0的反码,补码都是0

在计算机运算的时候,都是以补码的方式来运算的。

java中有4中位运算,分别是按位与&,按位或|,按位异或^,按位取反。

&:两位全为1,结果为1

|:两位有一个为1,结果为1

^:两位有一个为1,一个为0,结果为1

~取反:0取反位1,1取反位0

java中有3个移位运算符

>>算术右移:符号位不变,低位溢出,并用符号位补溢出的高位

<<算术左移:符号位不变,低位补0

>>>逻辑右移:低位溢出,高位补0