做而论道_CS:

所谓的:机器数符号位原码反码 ...

都是计算机专家在【忽悠、卖拐】而已。

正负数值,存入计算机,都是以 “补码” 存放的。

计算机中,根本就没有原码和反码。

除非,你自寻烦恼,偏要在计算机中,存入原码和反码。

既然没有原码反码,那么,取反加一,计算机也就不能做了。

其实,所谓的 “补码”,也是正常的数字。

也并非一定是二进制数。

你看十进制吧,两位数:0 ~ 99。

可以有:27 + 99 = (一百) 26

也可以:27 - 1 = 26

如果你忽略进位,依旧保持两位数,

这两种算法的功能,就是相同的!

就是说,当你舍弃了进位:

负数,就能用正数代替;

加法,竟然就能实现减法运算!

在计算机中,舍弃进位,会怎样?

就可以简化硬件。

用一个加法器,便可横行天下!

由此可知,“补码”,根本就不是什么新鲜事。

它并不是:符号位原码反码取反加一。

其关键,是:【舍弃进位】。

上过小学的,都懂这个!

------------

用两位十进制运算时,舍弃进位,就是【减去一百】。

那么,加 99,再减 100,当然就是 “-1” 了。

计算机使用二进制数。

八位二进制数是:0000 0000 ~ 1111 1111。

相当于十进制数:0 ~ 255。

如果出现 “进位 = 1”,就是:2^8 = 256。

那么,加 255,再减 256,这也就是 “-1” 了。

所以:+255 (1111 1111),就是:-1;

同理:+254 (1111 1110),就是:-2;

+253 (1111 1101),就是:-3;

。。。 。。。

+128 (1000 0000),即:-128。

以上这些正数,就是计算机专家 “发明” 的补码了。

你肯定能看出关系式:

负数的补码 = 256 + 该负数。

一般化,就是:

负数的补码 = 2^n + 该负数。

n,是二进制数的位数。

例:求-31 的 “补码” 是多少?

解:256-31 = 225 = 1110 0001 (二进制)。

这不就求出来了吗?

哪还用琢磨什么:符号位原码取反。。。!

还要啥自行车啊!

谁要是跟老外学算术,

立刻、马上、直接,就掉坑里去了!

Copyright © 2088 2017乒乓球世界杯_世界杯体彩 - uzhiqu.com All Rights Reserved.
友情链接