补码原码反码
正数的原码、反码和补码都相同。
负数原码和反码的相互转换:
符号位不变,数值位按位取反。(0变1,1变0)
负数原码和补码的相互转换:
符号位不变,数值位按位取反,末位(最右边)再加1。
注意:负数在java中以补码形式存储
移位和位操作运算
①& 按位与
如果两个相应的二进制位都为1,则该位的结果值为1,否则为0
②| 按位或
两个相应的二进制位中只要有一个为1,该位的结果值为1
③^ 按位异或
若参加运算的两个二进制位值相同则为0,否则为1
④~ 取反
~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1变0
⑤<< 左移
用来将一个数的各二进制位全部左移N位,右补0
⑥>>右移
将一个数的各二进制位右移N位,最高位是什么就在左边补齐什么(0补0,1补1)
⑦>>>无符号右移
将一个数的各二进制位右移N位,最高位补0
【0为正,1为负】
十进制转换成二进制
Integer.toBinaryString(int i);
for (int i = 31; i >= 0; i--)
{
System.out.print((temp >>> i ) & 1);//输出每一位
}