为什么要了解这三种东西?
因为他和数据存储有关。
整数的二进制表示的三种形式:原码,补码和反码。
有符号的整数(signed int)的三种表示方法里面有符号位和数值位两部分,2进制序列里面,最高位是符号位,剩下的是数值位置。
符号位里面0是"正数",1是"负数"
①正整数:三种码一模一样
②负整数:三种码完全不一样
(1)原码:直接把数字换成二进制表示就是原码
(2)反码:顾名思义,把除了符号位数字其他全部反过来表示就是反码
(3)补码:反码+1就是补码
Eg1:数字10,在整型存储中占四个字节(32bit)所以其原码为:
00000000000000000000000000001010
其中,第一个bit表示这是正数,后面31为表示这是个10。
由于它是正整数,所以它原码反码补码均是这个东西表示。
Eg2:数字-10,其原码为:
10000000000000000000000000001010
那么它的反码:
11111111111111111111111111110101
那么它的补码:
11111111111111111111111111110110
整型在数据存放内存里面用的是补码:
使用补码可以将符号位和数值与统一处理。同时加减法可以统一处理(CPU只有加法器)。除此之外,补码和原码转换的运算过程相同,不需要其他硬件电路。