定点数的运算 —— 原码、补码的加减法运算
做而论道_CS:
如果是八位数,各码范围如下。
原码:-127 ~ +127;
反码:-127 ~ +127;
补码:-128 ~ +127。
注意,-128,只有补码,没有原码反码。
没有原码,你拿什么取反?
没有反码,你拿什么加一?
对此,计算机专家,就无法自圆其说。
-------------------
计算机中,只有二进制数。
作为数字,十进制、二进制,都是一样的。
它们,都是数,并不是什么什么码。
如果用数字,代表其它信息,才叫做 “码”。
如:学号门牌车牌电话性别英文汉字声音图像
-------------------
所谓的补码,其来源,并不是 “符号位原码 ...”!
而是来自于一个普遍的数学规律。
你看十进制,两位数,范围是:0 ~ 99。
其最大值 99,就可以当做-1 使用!
例如:36 + 99 = (一百) 35
36 - 1 = 35
只要你保持两位数,这两种算法就相同了。
即,舍弃了进位:
正数,就能当负数了(补码就出来了);
加法,也就成了减法运算。
在计算机中,舍弃进位,就可以省掉减法器了!
-------------------
计算机的字长,是固定值。
八位机的数字范围是:
0000 0000 ~ 1111 1111。
即十进制:0 ~ 255。
其最大值 255 ( 即 1111 1111 ),就能当-1 !
如,13-1 = 12,八位机的算法如下:
0000 1101
+ 1111 1111
---------
( 进1 ) 0000 1100
同理,254 (1111 1110),就可以当做-2 了。
还有,253 (1111 1101),就可以当做-3 了。
。。。
这些,你用二进制算一遍,就可以证明出来。
注意,计算时,要舍弃进位!
-----------------
所谓的补码,就是这么来的。
无论十进制、二进制,都有这个规律。
补码,并非是计算机所特有的。
更不是计算机专家发明的!
舍弃进位(保持位数不变),才是充分必要条件。
所谓的:
符号位原码反码取反加一符号位不变符号位也参加运算 ...
都是谎言!
|