做而论道_CS:
在计算机系统中,只有由高电平低电平构成的二进制数。既没有小数点,也没有正负号。
所以,计算机中。只有二进制的自然数(即零和正整数)。
计算机专家,就称之为:无符号数。
世界上的各种信息,存入计算机后,就都是【无符号数】了。
也即:都是【正整数】!
负数,是怎么表示的呢?
按十进制来说,就容易理解了。
两位十进制是:0~99,出现进位 1,就是一百(=10^2)。
随便做一个加法,如:27 + 99 = (一百) 26。
如果你弄丢了进位,无形中,就是减去了 100!
即使你再加上 99,它也就:-1。
此时,加法,就成了减法:27-1 = 26。
+99 可以当做-1 ! 看明白了吗?
关键是:运算时,舍弃了进位!
舍弃了进位 1,无符号的正数,就能当做负数使用!
舍弃进位,才是【补码】的来历。
二进制数,也是同样的道理。
八位二进制是:0000 0000~1111 11111 (= 十进制 255)。
出现了进位,就是 256(=2^8)。
那么,加法:27 + 255 = (进位 1,即 256) 26。
丢了进位,即减去了 256,再加 255,当然也就是:-1。
此时的加法,也就成了减法:27-1 = 26。
计算机中,只有正整数。也可以说是:无符号数。
所谓的 “有符号数”,也都是用无符号数进行保存和计算的。
只不过,在计算时,忽略了进位而已。
那么,负数存入计算机时,先要做这种变换:
补码=2^n+该负数。
就是说:
存放负数时,先加上一个进位 2^n,就成了 “补码”。
以后在进行计算时,再把这个进位舍弃掉,就平衡了。
由此可知,所谓的补码,并非是来自:
机器数真值符号位原码反码取反加一符号位不变。。。
这些,你就是都背熟了会用了,你也不可能知道:
减法是从哪里来的!
计算机老师讲的这些,就和刘谦变戏法一样:
都是忽悠,一句真话也没有!
但是,刘谦变的戏法,第二天就会有人揭秘。
而计算机老师所说的补码,许多年来,也没有露馅啊!
并且,还把这些,列入到考研的内容中。
这么多年,也不知道忽悠瘸了多少硕士博士!