资源描述:
《关于补码、原码、反码的深度思考.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、关于补码、原码、反码的深度思考关于补码,原码,反码的问题,说简单,很简单,基本人人都会算,会求解。可是没几个人能对这几个概念的来龙去脉搞得清清楚楚,明明白白的.比如,为什么引入编码,为什么引入原码,又为什么引入反码.反码存在的意义是什么,补码的引入原因,为什么补码能够把符号位一起运算?补码的优势到底在哪里?根据韩大师的指示(韩宏博士),我们应该对问题多多思考,多想几个为什么•如果你搞不懂来龙去脉,恐怕后面的操作儿乎可以把你搞得晕头转象,好象懂了,会做题了•可是心理总觉得没吃透,对吧??下面我把我的思考分亨给大家:计算机的基本功能是对信息进
2、行处理•所以我们引出了一个重要的概念信息表示的数字化,包括信息的表示,信息的存储,信息的转化,信息的加工,信息的传送,和对这些过程的控制.首先,我们把重点放在信息的表示,计算机屮进位记数制,我想应该都明白为什么用二进制吧?然后我们就需要对它进行编码?为什么要进行编码呢,在人脑屮只是约定了+为正数,-为负数,就可以在人脑屮进行高度抽象的运算了,但是,在计算机小不行啊,计算机很傻的,计算机小的任何行为都依赖于它的物理结构,它没有思维的.所以你必须告诉它什么是正,什么是负!所以我们必须进行编码,以区分正负.原码的出现与衰落最开始的时候,人们约定
3、在数前面第一位用做表示符号的位,1表示负o表示正.他们称Z为原码•很不错,可以成功的区分出正负了.可是马上就意识到它的一些局限性了.1加减的不方便,符号位需要单独处理,单独判断•同0相加或相减,那好判断•可异号呢?那就涉及一个判断是否够减的逻辑了•很难做到.2+0表示为0000-0表示为1000,这就存在二义性了,计算机屮是绝对不能容惹二义性的东西存在的.补码的大放光彩原码的缺点使人们要找出-种新的编码,这种编码就是补码•首先它必须继承原码的特点(可以表示正负)而口它至少应该有两个优点,可以把符号位一起运算和0没有二义性•怎么才能做到呢?
4、如果是你,你能创造出这种编码吗?在H常生活屮,我们发现时钟有这样一个特点,就是以12为模,13点是多久呢?舍弃模12大家都知道就是1点了・-1点也就是11点.两者是完全等价的,因为它们有模12.通过这个特点可以做什么?大家注意了,可以变减为加啊,比如:-1点再过5个小时是几点,-1+5=4点,我们可以这样变换(-1+12)+5=4,你会发现这个等式是不是错了?应该是16对啊,你错了,满12就已经溢出了,只剩下4.而计算机是否也有这个特点呢?答案是肯定的,实现模运算的基础显然就是寄存器的长度是固定的•那么变减为加那就算是实现了•例如82-5
5、4=82+46=(1)28,那么到底是怎么样才能把符号位一起运算呢?我们知道正数的补码就是本身,负数的补码就变反加一.我们來举个例子比如异号想加A-287-25,我们把它转换成补码=0(87)+1(75)=062,嘿嘿,发现没有符号位一起运算了•结果为62,再来,把它反过来25-87,转换成补码0(25)+1(13)=1(38),这里有的同会说,不对了,结果不应该是-38.你再仔细看看,我提示下补码+补码二?,也是等于补码啊,1(38)的真值是-62,对吧?完全可以把符号一起运算.最关键的部分就在这里了,把符号位一起运算的理论依据是什么,
6、什么样的编码可以连同符号位一起运算,而原码为什么不能把符号位一起运算?经过我一天一夜的思考:),大家看看这样理解对不对.数A,有正有负,对吧?也就是A+(-A)=0,哈哈,就是它了,我们设A二0001,你看原码,A=00001,-A=10001,A+(-A)=10010,哈哈1+(-1),变成-2了,再看补码00001+11111=00000,哈哈,完全正确,你如果再要去想为什么,也很简单了一个数加去它的补数二什么?半然二模了,模的定义就是模减去一个数的结果就是这个数的补数.等于模了,舍去模,那不就变成0了.这就是连同符号位一•起运算的依
7、据.你还会发现一•个特点,这个特点在我们物理上的具体实现吋是和当重要的•请看原码0001=0000000001,M1001是否等于111111111001呢,很明显是不可能的•而补码1001绝对是等于1111111001的,不信你算算看,这个性质就叫符号的可扩充性.反码的出现原因哈哈,补码很明显是我们的最佳选择了,为什么又弄一个叫反码的东西来,我看到这里的吋候也是很不理解,还是韩大师那句话,要多思考.它是怎么回事呢?它的思路应该是反过來的,我们联系联系具体的逻辑元器件,是不是有个非门的东西啊?你是1它变成。,0变成1,说白了就是按位取反啊
8、,所以反码是从下层映射上来的东西,我们为什么要研究它,就是因为它的物理太容易实现了,我们不得不研究它的性质,研究它与我们的补码的关系.结果,果不起然,关系密切着呢,是什么啊,反码加1就变补码了