反码和补码技术是怎样被提出的?
反码和补码技术是怎样被提出的?

作者:boater 提交日期:2006-10-11 22:15:00
======================1.预备知识。==================
注意:此处的'=='是相等的意思。'='是赋值的意思。
在机器世界里:
正数的最高位是符号位0,负数的最高位是符号位1。
对于正数:反码==补码==原码。
对于负数:反码==除符号位以外的各位取反。
     补码==反码+1.
     原码==补码-1后的反码==补码的反码+1。(读完本文后,应该能够直观地认识到本式的正确性)

可以轻易发现如下规律:
自然计算 :a-b==c.
计算机计算:a-b==a+b的补码==d.
c的补码是d.
通过此法,可以把减法运算转换为加法运算。

所以补码的设计目的是:
1.使符号位能与有效值部分一起参加运算,从而简化运算规则.
2.减运算转换为加运算,进一步简化计算机中运算器的线路设计.

=====================2.灵感由来。=================

概念定义:
还记得初中数学里的“补角”的概念吧。
两数之和等于100时,这两个数叫做互为“补数”,100称做“和数”。
如果B+C==100,则
A-B==A-(100-C)==A+C-100.
可以肯定:A-B=A+B的补数-和数。

把这个方法引入机器世界:
设int是8位整数(最高位是符号位),和数H是9位:1 0000 0000.
a,b是任意两int.
显然,a+a的补码==H,H溢出那个最高位之后就剩下了int值0.
①.输入a-b,
②.机器将a-b化个装后喂给加法器:(a的补码)+(-b的补码),它等于c.
不要忘了,c是一个补码.
③.输出:c的原码.

赋值A=a,B=b后,比较一下:
a-b==(a的补码)+(-b的补码)==c.//此处的c是补码形式。
A-B==A+B的补数-和数==C.//此处的C是数字,可以认为它就是原码形式。
if(C>=0) C==c==c的原码;('=='是相等的意思,并非赋值)
else C==c的原码;

这个“补码”中的“补”,跟初中学的那个“补”是一个意思。
数学中的概念名称真还不是随便定义的,比如“数理逻辑”,故名思义就是:用“数学语言”来理清“逻辑”。
end.
#日志日期:2006-10-11 星期三(Wednesday) 晴 送小红花 推荐指数:复制链接 举报
天涯“2016年度十大最具影响力博客”评选


登录 | 新人注册>>
输入您的评论:(不支持HTML标签)


验证码
本文所属博客:IT,软件
引用地址:
© 天涯社区