永发信息网

负整数用补码表示后,加减法运算就能使用统一加法器来完成了这句话是对的吗?

答案:1  悬赏:0  手机版
解决时间 2021-03-10 07:31
负整数用补码表示后,加减法运算就能使用统一加法器来完成了这句话是对的吗?
最佳答案
给你转一篇文章,这个应该可以消除你的疑惑:C语言关于补码的解释及误区在中文的C语言教材中,总有些人被原码、反码、补码弄得晕头转向,(其实我也觉得反码之类的东西是有些人自作聪明弄出来的定义,反而弄得人晕头转向,有时候简单挺好)正文开始:关于补码,看过一些书籍和网文,基本都是在"求反加一"的方法、步骤上反复强调,而对于补码的本质和定义,讨论的不足。这就对初学者的造成了误导,使得很多人都纠结在-128的补码求取过程中。关于反码和原码,大家都是在郑重其事的讲解,其实,学过的人都知道,它们的重要性是0!做而论道把自己对于补码的认识写在下面,但愿对读者有些帮助:加法器计算机里面,只有加法器,没有减法器,所有的减法运算,都必须用加法进行。即:减去某个数字(或者说加上某个负数)的运算,都应该研究如何用加法来完成。模、补数在日常生活当中,可以看到很多这样的事情:把某物体左转90度,和右转270度,在不考虑圈数的条件下,最终的效果是相同的;把分针倒拨20分钟,和正拨40分钟,在不考虑时针的条件下,效果也是相同的;把数字87,减去25,和加上75,在不考虑百位数的条件下,效果也是相同的;…。上述几组数字,有这样的关系:90+270=36020+40=6025+75=100式中的360、60和100,就是"模"(也可以理解成"进制")。式中的90和270、20和40,以及25和75,就是一对对"互补"的数字。知道了"模",求某个数字的"补数",就是轻而易举的了:如果模为365,数字120的补数为:365-120=245。用补数代替原数,可把减法转变为加法。出现的进位就是模,此时的进位,就应该忽略不计。二进制数的模前面说过的十进制数25和75,它们是2位数的运算,模是100,即1的后面加上2个0。如果有3位数参加运算,模就是1000,即1的后面加上3个0。这里的1000,是十进制数的一千,可以写成10^3,即10的3次方。推论:有多少位数参加运算,模就是在1的后面加上多少个0。对于二进制数字,模也是这样推算。如果是3位二进制数参加运算,模就是1000,即1的后面加上3个0;那么当8位二进制数参加运算,模就是100000000,即1的后面加上8个0。16位二进制数参加运算,模可就大了,是1的后面加上16个0。注意:这里提到的1、0,都是二进制数。8位二进制数的模可以按照十进制写成2^8,即256。16位数二进制数的模,就是2^16,按照十进制,它就是65536。二进制数的补码求二进制数的补数,目的是往计算机里面存放。在计算机里面,存放的数字什么的,都称为机器码;那么二进制形式的补数,也就改称为补码了。一般情况下,都是以8位二进制数来讨论补码,少数也有用16位数的。计算时加上正数,是不需要进行求取补数的;只有进行减法(或者加上负数),才需要对减数求补数。补码就是按照这个要求来定义的:正数不变,负数即用模减去绝对值。已知一个数X,其8位字长的补码定义为:/X0=X=+127;正数和0的补码,就是该数字本身[X]补=|^8-|X|-128=X0;负数的补码,就是用100000000(2的8次方),减去该数字的绝对值例如X=-126,其补码为10000010,计算方法如下:100000000-01111110-10000010可以看出,按照补码的定义来求补码,概念十分清晰,方法、步骤也是十分简单的。应用补码进行计算用补码计算:83-25=58。83-都变成补码,再用加法运算-01010011-25-100000000-00011001-+11100111--58-忽略进位1,结果就是正确的-[1]00111010计算结果如果超出了-128~+127的范围,结果将是错误的,这是没有法纠正的。应用补码进行计算,完全符合前面介绍的"用补数可把减法转换成加法"的做法,只要忽略进位(这个进位1,就是求补的时候,加进去的100000000中的1),结果就是正确的。这些关于补数、补码的定义、方法、步骤,读者如果看懂了前面的文字,相信大家自己都可以总结出来。那么为什么总有些网友要提出关于求取补码的问题呢?在做而论道看来,就是因为很多教材和网文都在这个问题上"画蛇添足"。关于补码的蛇足补码出现后,后人又补充了不少"蛇足":符号位、求反加一、原码、反码.。下面的表格给出了一些8位数的补码。-符号位从这个表格中,可以看出特点:正数的最高位都是0,负数的最高位都是1。这样一来,有人就把最高位理解成了符号位。说什么是规定的用0代表正号,.。并且郑重其事的补充说明:"符号位也参加运算"。真能忽悠!卖拐、卖车的都甘拜下风。其实,前面说过的补数和补码的定义式里面,根本就没有什么符号位。这最高位的1、0是自然出现的,并不是由人来规定的。-求反加一负数补码的后面七位,也可以看出一个不完全的规律:它们和绝对值之间存在着"求反加一"的关系。于是,又有人推出了这个不同于定义式的算法。-原码和反码由于使用"求反加一"来求取补码,顺便又引出了原码和反码两个垃圾概念。其实,"求反加一"的计算方法只是适用于计算二进制形式的补数,它并不是通用的。并且把"求反加一"用于求-128的补码,有个溢出的现象,很多人都在这里被弄瘸了很长时间。原码和反码也只不过是"人工"进行"求反加一"时的中间过程,在计算机里面根本是不存在的,它们也就没有丝毫用处。做而论道的建议求取补码,就按照定义的规定,负数采用"模减去绝对值"的方法来求,这是求补数的通用方法,适合于各种进制、各种大小的数字。不要用求反加一的方法,也就不用理会原码和反码了,也不牵涉符号位的问题。以后的计算,也就没有必要特殊说明:"符号位一起参加运算.",因为根本就没有什么符号位。如果把原码和反码、符号位等等垃圾概念,从计算机的书中删减掉,学习补码将会省力不少。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
河北省定州启明中学几月几号放暑假
龙翔瓷业我想知道这个在什么地方
SHARP BCD-176冰箱冷藏室怎么使用
山东叉车培训,哪里有专业叉车培训学校
求大神教我理综怎么把速度拉起来又能保证正确
芒果的芒能组什么词语
猫为什么会怕人?
送老年女性老中医什么生日礼物为好
无锡爱格派橱柜怎么样?
【很少的几句话什么言什么语】很少的几句话什
hasee/神舟 战神 z7m-kp7s1是四核处理器吗
正顺钢板仓工程公司我想知道这个在什么地方
3国无双5 黄月英 人物介绍
【同问】同问关于如()如()的成语
猫咪好养吗
推荐资讯
经常用护发素好吗?它对头发有伤害吗?
中国重汽国3发动机 不是电喷的
微信聊天时对方用很下流很难听的话骂我我一气
居越门窗地址在什么地方,想过去办事
公元1234年发生了什么大事?
广东省广州市地方税务局通用机打发票代征税款
如何教育好上初中的女儿?
吃力的近义词是什么呢
有多少家庭因为岳母给搅和黄的婚姻?我也摊上
five hundred miles 安~(日本女人唱的)
网王王子们的孩子穿回去找撮合父母的
中国工农红军西路军纪念馆地址在什么地方,想
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?