补码
做而论道_CS:
计算机的字长,是固定的。
八位机,它只会做:
八位 + 八位 = 一个进位、八位的和。
计算机使用二进制数。
二进制数,也是数,并不是什么码。
八位二进制数是:0000 0000 ~ 1111 1111。
也就是十进制数:0 ~ 255。
如果有进位,就是:2^8 = 256。
在两位十进制运算中,舍弃的进位,是一百。
那么:
加 99,再减 100,当然就是 -1。
加 98,再减 100,必定就是 -2。
。。。
八位二进制的进位,是:2^8 = 256。
加 255 (1111 1111),再减 256,就是 -1 !
同理:
+254 (1111 1110),就是 -2。
+253 (1111 1101),就是 -3。
。。。
+128 (1000 0000),就是 -128。
以上这些正数,就是计算机专家 “发明” 的补码!
你如果上过中学,你一定能推出关系式:
负数的补码 = 256 + 负数。
一般化:
负数的补码 = 2^n + 负数。
n,是补码的位数。
例:求-31 的补码是什么?
解:256-31 = 225 = 1110 0001 (二进制)。
这不就求出来了吗?
哪里还用什么 “原码取反加一”!
-------------
求正数的补码,公式也是雷同的:
正数的补码 = 256 + 该正数。
要知道,加上 256,就是出现一个进位。
进位必须舍弃,所以,256 就不用加了。
于是,公式可以简化为:
正数的补码 = 该正数。
在此处,这就证明了:
零和正数的补码,就该数字本身。
举例,就不用了吧。
计算机专家也是说:
正数的补码,就是该正数。
但是,他们并没有给出证明。
为什么不加以证明呢?
因为这些专家:
弄不懂什么是进位,
更不懂什么是舍弃进位!
补码
做而论道_CS:
计算机,使用的是二进制数。
作为数字,二进制、十进制,都是一样的。
数,它们就是数,并不是什么“原码反码补码”。
如果用数字,代表 “非数字”,才能叫做 “码”。
如:学号、门牌车牌电话性别英文汉字声音颜色 ...
在码长八位时,各码的范围如下:
原码:-127 ~ +127;
反码:-127 ~ +127;
补码:-128 ~ +127。
看到了吧?
-128 只有补码,没有原码和反码。
没有原码,拿什么取反?
没有反码,拿什么加一?
取反加一,不可用!
-128 的补码,又是怎么来的?
是特殊规定的吗?
不是的!
所有的补码,都是算出来的。
但是,并不是用 “原码取反加一” 算的。
-------------------
所谓的 “补码”,并非二进制才有。
在任何进制中,都是存在的。
补码,也并非是计算机专家的发明。
你看十进制数,两位的:0 ~ 99。
可以有:
27 + 99 = (一百) 26
27 - 1 = 26
只要你忽略进位,仍旧保持两位数,
这两种算法的功能,就是相同的!
即,舍弃了进位:
正数,就能当负数使用!
加法,也就可以实现减法运算!
在计算机中舍弃进位,会怎样?
可以省掉减法器,简化硬件!
只用一个加法器,就可横行天下!
==================
你如果明白什么是【忽略进位】:
你就能懂得 “补码” 的来源与意义。
==================
补码
做而论道_CS:
计算机中,只有二进制数。
哪有什么原码反码补码!
符号位,也是根本就不存在的。
矩阵的转置 java
泪迹638:
j每次应该从0开始
jsp+servlet登录成功,显示登录成功提醒
2301_80330347:
➕我告诉你