原码:
就是一个数的二进制表示,是我们最熟悉的二进制有符号数的表示方式,正数的话符号位为0,负数为1。
15的原码就是0000 0000 0000 1111;-15的原码就是0000 0000 1000 1111
反码:
反码是基于原码的变动,有两种情况,如果是正数的反码,就跟原码相同。如果是负数的反码,则除了符号位,其他全部取反
15的反码就是0000 0000 0000 1111;-15的反码就是0000 0000 1111 0000
补码:
补码是基于反码的变动,有两种情况,如果是正数的补码,就跟原码反码都相同。如果是负数的补码,则在其反码的基础上,再加1
例:15的补码就是0000 0000 0000 1111;-15的补码就是0000 0000 1111 0001
这里我们举例int a=-2输出八进制
第一步
写出-2的补码(字节数请看)
即1111 1111 1111 1110
第二步
以3个bit为一组此时二进制数对应的十进制数为7,我们这里输出的是八进制,满8进位,所以取3个bit为一组
从右到左分割得到:
1 111 111 111 111 110
这个就是八进制数的二进制表示,展开得到的数字是177776