当前位置:首页 > 自我学习 > 正文内容

什么是补码(什么是补码?在计算机中,为何引入补码?)

2023-02-10 04:10:05自我学习10

什么是补码?在计算机中,为何引入补码?

补码是计算机里一种带符号数的表示方法,相对应的还有原码和反码,但在计算机系统里,数值一律都是用补码来表示和存储,这样便于将符号位和数值域统一处理,加法和减法也可以统一处理。

这三种码都是用固定长度的二进制数表示,最高位是符号位,0代表正数,1代表负数。

数值的原码,其对应的二进制真值放低位,中间用0补齐。

正数的原码、反码、补码都一样。

负数的反码,在原码的基础上保留符号位不变,其余各位置反;负数的补码,在反码的基础上再加1。

计算机为什么采用补码

简单地说,补码就是反码加1。

计算机中为什么要使用补码呢?主要原因:1、使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃

计算机中表示数时为什么要引入补码

对于(+0)和(-0),在人们的计算概念中零是没有正负之分的.(印度人首先将零作为标记并放入运算之中,包含有零号的印度数学和十进制计数对人类文明的贡献极大).

于是就引入了补码概念. 负数的补码就是对反码加一,而正数不变,正数的原码反码补码是一样的.在用字节表示时补码中用(-128)代替了(-0),所以用字节表示的补码的范围为:

(-128~0~127)共256个.

注意:(-128)没有相对应的原码和反码。

为什么通用计算机中多采用补码运算

数值有正负之分,计算机就用一个数的最高位存放符号(0为正,1为负).这就是机器数的原码了.假设机器能处理的位数为8.即字长为1byte,原码能表示数值的范围为

(-127~-0 +0~127)共256个.

有了数值的表示方法就可以对数进行算术运算.但是很快就发现用带符号位的原码进行乘除运算时结果正确,而在加减运算的时候就出现了问题,如下: 假设字长为8bits

( 1 ) 10- ( 1 )10 = ( 1 )10 + ( -1 )10 = ( 0 )10

(00000001)原 + (10000001)原 = (10000010)原 = ( -2 ) 显然不正确.

因为在两个整数的加法运算中是没有问题的,于是就发现问题出现在带符号位的负数身上,对除符号位外的其余各位逐位取反就产生了反码.反码的取值空间和原码相同且一一对应. 下面是反码的减法运算:

( 1 )10 - ( 1 ) 10= ( 1 ) 10+ ( -1 ) 10= ( 0 )10

(00000001) 反+ (11111110)反 = (11111111)反 = ( -0 ) 有问题.

( 1 )10 - ( 2)10 = ( 1 )10 + ( -2 )10 = ( -1 )10

(00000001) 反+ (11111101)反 = (11111110)反 = ( -1 ) 正确

问题出现在(+0)和(-0)上,在人们的计算概念中零是没有正负之分的.(印度人首先将零作为标记并放入运算之中,包含有零号的印度数学和十进制计数对人类文明的贡献极大).

于是就引入了补码概念. 负数的补码就是对反码加一,而正数不变,正数的原码反码补码是一样的.在补码中用(-128)代替了(-0),所以补码的表示范围为:

(-128~0~127)共256个.

注意:(-128)没有相对应的原码和反码, (-128) = (10000000) 补码的加减运算如下:

( 1 ) 10- ( 1 ) 10= ( 1 )10 + ( -1 )10 = ( 0 )10

(00000001)补 + (11111111)补 = (00000000)补 = ( 0 ) 正确

( 1 ) 10- ( 2) 10= ( 1 )10 + ( -2 )10 = ( -1 )10

(00000001) 补+ (11111110) 补= (11111111)补 = ( -1 ) 正确

所以补码的设计目的是:

⑴使符号位能与有效值部分一起参加运算,从而简化运算规则.

⑵使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计

什么是补码?在计算机中,为何引入补码信息

对于(+0)和(-0),在人们的计算概念中零是没有正负之分的.(印度人首先将零作为标记并放入运算之中,包含有零号的印度数学和十进制计数对人类文明的贡献极大).

于是就引入了补码概念. 负数的补码就是对反码加一,而正数不变,正数的原码反码补码是一样的.在用字节表示时补码中用(-128)代替了(-0),所以用字节表示的补码的范围为:

(-128~0~127)共256个.

注意:(-128)没有相对应的原码和反码。

计算机中为什么要引入补码

使用二进制计算的时候会出现溢出现象,是因为计算机都有它的上限和下限,太大的数值和太小的数值都是无法显示出来的。

计算机中用补码来表示和存储数值,而在进行数值的算术运算时由于机器字长的限制往往会出现补码溢出,导致计算结果错误。

针对这个问题,提出了一种根据溢出结果得到正确结果的计算方法:

两个正数相加溢出时,将错误解加上2~(n+1)即为正确解;

两个负数相加溢出时,将错误解减去2~(n+1)即为正确解。

本网站文章仅供交流学习 ,不作为商用, 版权归属原作者,部分文章推送时未能及时与原作者取得联系,若来源标注错误或侵犯到您的权益烦请告知,我们将立即删除.

本文链接:https://www.xibujisuan.cn/98736351.html