故事的起源
计算机诞生之后,这个简单的机器可以认识二进制数0和1的区别。所以人们用一串二进制数比如1101001来表示一些信息。这是最原始的数字,没有正负之分,也叫无符号数。
原码
后来为了展现出正数负数的差别,人们发明了原码,可以展现生活中数字的正负之分。
一般情况下,第一位留出来当做符号位。0代表正数,1代表负数。这样子,就有了正负之分。但是按照正常生活中,可以知道相反数相加等于0。0001(+1)和1001(-1)相加却不等于0而是1010(-2)。这是不对滴。所以人们发明了反码。
反码
反码主要是针对负数来说的。正数不变,负数符号位不变,其余位取反。这样0001(+1)和1110(-1)相加得到的正好是1111(-0),解决了相反数和为0的问题。
真是聪明的人类,但是还有一个问题啊,就是0000是0,1111也代表0。怪尴尬的。于是人类又继续改进。
补码
补码同样是对负数进行操作的。因为1111,我们想让他变成0000,就末位加1,这样变成10000之后,舍掉最高位,就得到了0000。所以0就统一了,只有0000。那么补码都是反码最后一位加一得到的。原来的1111(-0)没有了,变成了1000(-8)。
到此这么简单理解一下,也能记住啥是补码了。计算机实际计算中没有减法器都是用加法进行计算的,计算机中存储和运算的也都是补码。
删除线格式