常常会混淆移位操作的概念,因此在这里记录下测试程序。
public class Main {
public static void main(String[] args) {
System.out.println("Hello World!");
// testSwitch();
testShfit();
}
/**
* 关于二进制数加减法
* 原码、反码、补码
* 正数:
* 原码就是原始数值的二进制表示形式,最高位符号位是0
* 反码是原码的按位置取反
* 补码是反码的基础上+1
*
* 负数:
* 原码就是最高位为1的表示形式
* 反码是最高位的符号位不变,其余位子按位置取反即可
* 补码是反码+1
*
* 在计算内,正数的表示为原码,负数的表现为补码,
*
* 3-3
*
* 3:
* 0011
*
* -3:
* 原码:1011
* 反码:1100
* 补码:1101
*
* 补码=反码+1
*
* 3-3== 0011
* +1101
* -----------
* 10000
* -----------------
* 这里的1是溢出位,舍弃即可,租后最后结果为0
*
* 8-8
*
* 8:
* 原码:1000
* 反码:0111
* 补码:1000
*
* -8: