(不知道为什么打印输出顺序有问题 所以我做了标记 方便阅读)
在Java中 整数类型 都是以补码的形式存储
补码: 反码 + 1
反码: 在原码的基础上符号为不变 逐位取反
原码:人类计算的二进制真值 正数原码=补码=反码
Integer.toBinaryString() 输出的结果是计算机内存中真正存储的形式(补码)
例如计算-11的补码:
-11 原码:1000 0000 0000 0000 0000 0000 0000 1011
-11的反码:1111 1111 1111 1111 1111 1111 1111 0100 (负数的原码 :符号为不变 其余各位依次取反)
-11的补码:1111 1111 1111 1111 1111 1111 1111 0101 (负数的补码 :在反码的基础上 加1 为补码)