先明确几个概念:原码,反码,补码,byte和bit
byte:字节
bit:位
1字节=8位(1 byte = 8bit),一个英文占一个字节,一个汉字在不同的编码格式下所占字节不同,不过一般来说是两个字节
原码:正数的原码就是十进制转换为二进制后的结果,负数的原码是此数对应的绝对值转换为二进制后最高为补1
反码:正数的反码是其本身,负数的反码是原码除最高位符号位以外全部取反
补码:正数的补码是其本身,负数的补码是原码除最高位符号位以外全部取反后结果最低位加1(计算机的存储形式)
以8为例:
先将8转换为二进制。
方法:十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
按照上述方法,8的二进制为:00000100
所以,8的原码、反码以及补码分别是
原码:00001000
反码:00001000
补码:00001000
然后再来看-8的原码、补码和补码
原码:10001000
反码:11110111
补码:11111000