数电基础知识——原码、反码、补码
做而论道_CS:
为什么要用补码?
补码,究竟是个什么东西?
从“符号位原码反码取反加一 ... ”,开始学习,
不但不能回答问题,反而掩盖了补码的本质!
==划重点=================
补码,实际上,它就是一个【代替负数】的正数。
======================
用十进制来说明,就比较容易理解。
如果限定,仅用两位十进制数 0~99,
那么,-1,就可用 +99 代替。
如: 24-1 = 23
24 + 99 = (进位 1 ) 23
舍弃进位,只取两位,结果就是正确的。
+99,就是-1 的补数。
(二进制时,就称为 “补码”。)
+98,就是-2 的补数。
。。。
结论:限定了位数,正数,就可以当负数来用。
用加法,也就可以代替减法运算。
意义:仅用加法器,就可做加、减两种运算!
由此,就可以简化计算机的硬件。
-------------------------
讨论补码之前,应该注意:
1. 计算机进行运算时,位数,是固定的。
八位机的计算,就只用到八位二进制数。
2. 在计算机中,只有加法器。
负数或减法,都必须用补码的加法来运算。
因此,14-14 = 0,八位机将如下计算:
0000 1110+xxxx xxxx = 0000 0000。
其中的 xxxx xxxx,就是【-14 的八位补码】。
这个补码,究竟是什么? 你也可以自己推导啊!
先移项:xxxx xxxx = 0000 0000-0000 1110。
可得出:xxxx xxxx = (借位 1) 1111 0010。
取八位:xxxx xxxx = 1111 0010。
做一步减法,就得出了:[-14]补 = 1111 0010。
《《《 负数的补码,就是这么推出来的 !》》》
“符号位原码反码取反加一符号位不变”,
根本就没有任何用处!
|