定点除法运算
做而论道_CS:
。。。“补码就是反码加一”。。。
----------------
书上确实是这么写的。
但是,他们说的,对吗?
如果码长是 8 位,各码的表示范围是:
原码:-127 ~ +127;
反码:-127 ~ +127;
补码:-128 ~ +127;
看到了吗?
-128 只有补码,没有原码和反码。
同样,无论码长是多少位,原码反码都比补码,少一个数。
那么:
没有原码,拿什么取反?
没有反码,拿什么加一?
其实,取反加一,就是蒙骗学生的谎言!
根本就不能说明:“补码是怎么回事”。
-------------------------
所谓的“补码”,只是一个【代替负数的正数】而已。
你上过小学吗?
做过这样的算术题吧:
27 - 1 = 26
27 + 99 = (一百) 26
你只要舍弃了进位:
+99 就能代替-1;
+98 就能代替-2;
。。。
同时,加法,也就能代替减法运算。
如果在计算机中,舍弃了进位,那么:
在计算机中,就没有负数了。
减法运算,当然也就没有了。
因此,计算机只须配置一个加法器,便可走遍天下!
舍弃进位!
舍弃进位!!
舍弃进位!!!
这才是 “补码” 的来历。
哪有什么:机器数符号位原码反码取反加一 ... !
------------------
保留或舍弃进位,是由你的软件决定的。
因此,所谓的补码,它是由【算法】导出来的。
“补码”,跟硬件,毫无关系。
同样,“浮点数” 的值,也是由软件实现的。
因此,“浮点数”,也跟计算机毫无关系。
学习计算机时,先要学懂硬件,然后在此基础上,学习编程。
只有在编程时,才需要讨论各种算法。
|