计算机组成原理学习(二)原码,反码,补码
数据在计算机中以二进制串存储,这种01序列叫“ 机器数 ”。 每个机器数都有对应的值,比如0001换算就是现实里十进制的1,这个值叫它的“ 真值 ”。 1.原码 为了表示负数的前面的符号,一种办法是采用“ 最高一位表示符号而非数值 ”的编码方式——原码。 如八位的运算器,机器数0000 0001的真值为1,1000 0001的真值为-1。第一位为符号位,剩下的位表示真值。 解决了符号表示问题,但是引出了新的问题,那就是1000 0001不能按照常识意义上来换算了,按正常二进制转十进制的换算,1000 0001实际上代表129。 这样在硬件电路设计时会带来麻烦,要让机器能够先辨识符号位,再进行真值的计算。 2.反码 任何减法都可以转化为加上一个负数,如 1+1 = 1+(-1)。做加法比减法简单,要是能用一种新的编码方法把-1表示出来,然后和+1做加法,最后结果按照这种编码方式还是正确的,那就太好了。于是 为了让符号位也能参与计算 ,反码诞生了。 反码的表示方法基于原码,最高位仍然是符号位。正数的反码是其本身,负数的反码 符号位不变,剩下的位全部取反 。 +1 原码0000 0001,反码 0000 0001 -1 原码1000 0001,反码1111 1110 人们发现,采用这种编码方式,算出来的值是正确的。 用反码计算: 1-1 = 1+(-1) = 0000 0001 +