关于二进制补码及补码加法的思考
做而论道_CS:
“补码” 的来历,十分的简单:
就是你【舍弃了进位】。
老外的数学水平,洼得很,理解不了这些。
所以,才编造了一套谎言。
谁要是跟着老外学算术,立刻、马上,直接就掉沟里了!
关于二进制补码及补码加法的思考
做而论道_CS:
另外,由补码换算到十进制数,也极其简单。
你只需记住:【补码首位的权,是负数】。
一般的八位二进制数,各个位的权是:
128、64、32、16、8、4、2、1;
如果是八位的补码,各个位的权则是:
-128、64、32、16、8、4、2、1。
例如,有一个补码:1110 0001,
它代表的十进制是:-128 + 64 + 32 + 1 = -31。
又如,另一个补码:0110 0001,
它代表的十进制是:0 + 64 + 32 + 1 = +97。
你看吧,仅仅使用【进制转换】,就完事了!
哪里还需要用到原码反码?
------------
实际上,二进制数,它就是数!
什么原码反码补码,都是不存在的事!
不存在的东西,为什么还要讲、还要学、还要考研?
因为,计算机老师讲这些,可以赢得丰厚的利益!
所以,这些老师,才会毁人不倦坑人不浅!
关于二进制补码及补码加法的思考
做而论道_CS:
在两位十进制数运算中,舍弃进位,就是 “减去了一百”。
那么,加 99,再减 100,当然就是 “-1” 了。
八位二进制数是:0000 0000 ~ 1111 1111。
也就是十进制数:0 ~ 255。
如果有进位,就是:2^8 = 256。
此时,加上 255 (1111 1111),再舍弃进位 256,
这不就是-1 吗?
所以:+255 (1111 1111),就是-1;
同理:+254 (1111 1110),就是-2;
+253 (1111 1101),就是-3;
。。。
+128 (1000 0000),就是-128。
这些正数,就是计算机专家 “发明” 的负数补码。
另外,加上 127 (0111 1111),是不会出现进位的。
当然,也就不用舍弃进位,也就不用减 256 了。
因此,加上 127,就不会出现 “减法的作用”。
所以,0 ~ 127,这些就是 “正数”。
而 128 ~ 255,就是负数:-128 ~ -1。
于是,0~ 255,就代表了:-128 ~ +127。
------------------
老外的算术能力很差,不懂什么是进位,
更弄不懂什么是舍弃进位。
所以,就编造了一套谎言:
机器数真值符号位原码反码补码正数三码相同
负数取反加一符号位不变符号位也参加运算模
我们的老师,数学底子也很差啊!
小学的算术,都看不透,就被老外忽悠瘸了!
天天喋喋不休的:原码反码取反加一。。。
也不知道有多少学生因此而挂科。
关于二进制补码及补码加法的思考
做而论道_CS:
虽然,计算机使用的,是二进制数。
但是,二进制数,也是数,并不是什么原码反码补码。
所谓的 “补码”,并非是二进制才有。
任意的进制,都有 “补码” 存在。
你看十进制吧,两位数就是:0 ~ 99。
那么有:27 + 99 = (一百) 26
27 - 1 = 26
只要你忽略进位,仍然保持两位数,
这两种算法,功能,就是相同的。
即,舍弃了进位:
正数,就和负数一样了,
加法,也就能当成减法运算!
在计算机中,舍弃进位,会怎样呢?
就可以省略减法器。
用一个加法器,横行天下!
你如果明白什么是【舍弃进位】,
你就能理解 “补码” 的来历和意义!
弄懂了 “补码” 之后,你就会知道:
计算机中,只有数!
机器数真值符号位原码反码。。。
都是多余的!