阐述补码除法运算运算的意义。

阐述补码运算的意义。_百度知道
阐述补码运算的意义。
提问者采纳
数值在计算机中表示形式为机器数,计算机只能识别0和1,使用的是二进制,而在日常生活中人们使用的是十进制,&正如亚里士多德早就指出的那样,今天十进制的广泛采用,只不过我们绝大多数人生来具有10个手指头这个解剖学事实的结果.尽管在历史上手指计数(5,10进制)的实践要比二或三进制计数出现的晚.&(摘自&&数学发展史&&有空大家可以看看哦~,很有意思的).为了能方便的与二进制转换,就使用了十六进制(2 4)和八进制(23).下面进入正题. 数值有正负之分,计算机就用一个数的最高位存放符号(0为正,1为负).这就是机器数的原码了.假设机器能处理的位数为8.即字长为1byte,原码能表示数值的范围为 (-127~-0 +0~127)共256个. 有了数值的表示方法就可以对数进行算术运算.但是很快就发现用带符号位的原码进行乘除运算时结果正确,而在加减运算的时候就出现了问题,如下: 假设字长为8bits ( 1 ) 10- ( 1 )10 = ( 1 )10 + ( -1 )10 = ( 0 )10 ()原 + ()原 = ()原 = ( -2 ) 显然不正确. 因为在两个整数的加法运算中是没有问题的,于是就发现问题出现在带符号位的负数身上,对除符号位外的其余各位逐位取反就产生了反码.反码的取值空间和原码相同且一一对应. 下面是反码的减法运算: ( 1 )10 - (哗笭糕蝗蕹豪革通宫坤 1 ) 10= ( 1 ) 10+ ( -1 ) 10= ( 0 )10 () 反+ ()反 = ()反 = ( -0 ) 有问题. ( 1 )10 - ( 2)10 = ( 1 )10 + ( -2 )10 = ( -1 )10 () 反+ ()反 = ()反 = ( -1 ) 正确 问题出现在(+0)和(-0)上,在人们的计算概念中零是没有正负之分的.(印度人首先将零作为标记并放入运算之中,包含有零号的印度数学和十进制计数对人类文明的贡献极大). 于是就引入了补码概念. 负数的补码就是对反码加一,而正数不变,正数的原码反码补码是一样的.在补码中用(-128)代替了(-0),所以补码的表示范围为: (-128~0~127)共256个. 注意:(-128)没有相对应的原码和反码, (-128) = () 补码的加减运算如下: ( 1 ) 10- ( 1 ) 10= ( 1 )10 + ( -1 )10 = ( 0 )10 ()补 + ()补 = ()补 = ( 0 ) 正确 ( 1 ) 10- ( 2) 10= ( 1 )10 + ( -2 )10 = ( -1 )10 () 补+ () 补= ()补 = ( -1 ) 正确 所以补码的设计目的是: ⑴使符号位能与有效值部分一起参加运算,从而简化运算规则. ⑵使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计 所有这些转换都是在计算机的最底层进行的,而在我们使用的汇编、C等其他高级语言中使用的都是原码。
提问者评价
太给力了,你的回答完美地解决了我的问题,非常感谢!
来自团队:
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁浮点数的计算?还有,反码和补码有什么意义?为什么要把数用它们表示呢?
fatesaberDHs
原码:在二进制数前加了符号,0表示正数,1代表负数!补码:对于正数,补码就是原其原码;对于负数,就是其原码(符号位除外)按位取反后最后加1 反码:对负数原码的按位取反,包括符号位,正数与原码相同浮点数的计算参照/avatar%B9%E2%D3%B0/blog/item/c695.html
为您推荐:
其他类似问题
扫描下载二维码工具类服务
编辑部专用服务
作者专用服务
微机系统中补码的原理及意义
补码在二进制的学习中,常常与原码、反码一起出现,对于原码和反码我们理解基本上没问题,但对于补码的学习总感觉心里面有一些“结”,笔者通过对补码的学习和理解,总结一些心得和体会,希望给大家,特别是初学者学习补码有一定的启发和帮助。
作者单位:
广州工程技术职业学院机电工程系,广东广州,510470
年,卷(期):
机标分类号:
在线出版日期:
本文读者也读过
相关检索词
万方数据知识服务平台--国家科技支撑计划资助项目(编号:2006BAH03B01)(C)北京万方数据股份有限公司
万方数据电子出版社组成原理 反码和补码的意义_百度知道
组成原理 反码和补码的意义
反码,没有用途;补码,有把减法转换成加法的用途。----日常生活中,大家都知道,把时针倒拨20分钟,和正拨40分钟,效果是相同的。-20,就对应了 +40。怎么算的?用 60 减去 -20 的绝对值,即可。----另外,100 以内的数字,减去1,和加上 99,效果也是相同的。比如,27 - 1 = 26,  27 + 99 = (1) 26。即 -1,就对应了 +99。怎么算的?用 100 减去 -1 的绝对值,即可。----这些,就体现了《模》与《补数》的概念。利用补数,就可把减法,转换成加法。如果是正数,直接做加法就行,不用费事。----对于负数,要用《模》减去这个负数的绝对值,求出《补数》之后再用于计算。对于正数,就不用变了。----八位二进制数字的《模》是 1 ,即 256。-5 的补数就是:256 - 5 = 251。----把 5、251,都写成二进制数,这就称为了《码》,此时就可以看出它们有《求反加一》的关系。即把 5 = ,求反加一,就有:,这就是 -5 的补码,这也就是 251。----八位时,补码定义式如下:[X]补 = X ;0 =& X =& 127[X]补 = 256 - | X | ;128 =& X & 0严谨一些的书上都有这个式子。---- 补码完全可以用十进制数表示,编程时,就写十进制数,保证都是正确的。补码,不必变成二进制,也就不用《求反加一》了,书上讲的那些步骤,都是垃圾。
其他类似问题
为您推荐:
提问者采纳
----八位时。----日常生活中,转换成加法,此时就可以看出它们有《求反加一》的关系;
=&lt?用 100 减去 -1 的绝对值,即 256,就有。即 -1,求反加一,大家都知道?用 60 减去 -20 的绝对值。-5 的补数就是。比如。-20。对于正数,没有用途,和正拨40分钟。---- 补码完全可以用十进制数表示,效果是相同的,100 以内的数字,减去1。----另外:256 - 5 = 251,这就是 -5 的补码,都写成二进制数,有把减法转换成加法的用途:[X]补 = X
,补码定义式如下。----八位二进制数字的《模》是 1 。----对于负数。怎么算的,保证都是正确的,不必变成二进制,就写十进制数,求出《补数》之后再用于计算,直接做加法就行,即可。----这些;0 =&lt,就可把减法。利用补数,即可、251;补码,效果也是相同的,27 - 1 = 26。如果是正数,把时针倒拨20分钟,就对应了 +99。----把 5,和加上 99,就体现了《模》与《补数》的概念。补码,就对应了 +40,要用《模》减去这个负数的绝对值:,编程时,  27 + 99 = (1) 26,这就称为了《码》;
&lt。即把 5 = ,不用费事; 0严谨一些的书上都有这个式子; 127[X]补 = 256 - | X |128 =&lt,也就不用《求反加一》了,书上讲的那些步骤。怎么算的反码,这也就是 251,都是垃圾,就不用变了
提问者评价
按照你说的,真的成功了,好开心,谢谢你!
补码的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁二次元同好交流新大陆
扫码下载App
汇聚2000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
. 进一步的分析表明,在将两个数的补码相加时,如果将两个补码的符号位和数值部分产生的进位相加,则得到的和就是两个二进制数相加后代数和的符号。例如要计算0101-1001,则可以先求出0101和-1001的补码00101和10111(最高位为符号位),再将两个补码相加而得到:如果需要求出负数补码对应的原码,只要对这个补码再求一次补码就可以得到了。&在FPGA设计中,如果代码中当我们使用“-” 算术操作符的时候,其实就是使用补码的形式,具体如下:&&& A&= 8'd5;&& B = 8'd9;&&&& A&-&B&等价于&A&+(~B +1'b1)&;在实际的操作中,综合器都会对电路如上优化。&例子1:假设&-3 + 8&, 只要将&-3&转为补码形式, 亦即&&, 然后和&8&, 亦即&1000&相加就会得到&5&,亦即&0101&。 至于溢出的最高位可以无视掉。&&& 1101&&&&& -3&补&+ 1000&&& &8&&&&0101&&&& 5例子2:&&& 1101&&&& -3&补&+& 1110&&&& -2&补&&&&1011&&& &-5&补这里要说明一个最重要的地方:首先,在Verilog-1995中,只有integer数据类型被转移成有符号数,而reg和wire数据类型则被转移成无符号数。由于integer 类型有固定的32位宽,因此它不太灵活,而reg型与wire型的可以自己定义位宽。在Verilog-2001中,有符号形式也被扩展到reg和wire数据类型中。哈哈,新加一个关键字,signed。eg:reg&& signed [7:0] a,reg&[0:5]&Binteger&TBar&=&4&-&6;Tab&=&4&-&6;这里:我们已经知道计算机中,所有数据最终都是使用二进制数表达。&也已经学会如何将一个10进制数如何转换为二进制数。&一个负数如何用二进制表达?在计算机中,负数以其正值的补码形式表达。注意在两种情况下,位向量存储内容都相同(都是111110即-2的补码);但是在第一种情况下,向量被解释为无符号数,而在第二种情况下,向量被 解释为有符号数。Bar被赋于十进制值62(-2的二进制补码),而Tab被赋于十进制值-2(位向量为111110)。下面为另一个实例:&Bar&=&-2&+&(-4);Tab&=&-2&+&(-4);&Bar被赋于十进制值58(位向量为111010),而Tab被赋于十进制值-6(位向量为111010)。&这里Bar的位宽是6,所以模为64,则-6的补码是58,即是Bar被赋予的值。注意:上边这里的用法也可以用在异步fifo的代码中,在进行地址指针的相减时。
阅读(804)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'FPGA 补码存在的意义',
blogAbstract:'& 每一个人都有存在的意义, 有的人用一生的时间去寻找自己的存在意义, 有的人则是经过生活的大反转,看到了自己存在意义,有的人则不闻不问&...&当然补码也有存在的意义,&',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:0,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}}

我要回帖

更多关于 二进制补码运算 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信