一、正码、补码、反码
二进制的最高位是符号位:0表示正数,1表示负数;
正数的原码、反码、补码都一样(三码合一)
负数的反码=它的原码符号位不变,其它位取反(0->1 , 1->0)
负数的补码=它的反码+1,负数的反码=负数的补码-1
0的反码补码都是0
java没有无符号数,都是有符号数,
在计算机运算的时候都是以补码的形式来运算的
当我们看它运算结果的时候,要看它的原码
二、位运算符
运算符 | 运算规则 |
---|---|
按位与& | 俩位全为1,结果为1,否则为0 |
按位或| | 俩位有一个为1,结果为1,否则为0 |
按位异或^ | 俩位一个为0,一个为1,结果为1,否则为0 |
按位取反 ~ | 0->1,1->0 |
算数右移 >> | 低位溢出,符号位不变,并用符号位补溢出的高位 |
算数左移 << | 符号位不变,低位补0 |
逻辑右移(无符号右移) >>> | 低位溢出,高位补0 |
说明 :
没有<<<符号
算数右移 1位 相当于除2
算数左移 1位 相当于乘2