负数表示法 原码 反码 补码 C语言整数 带符号整数 浮点数 浮点精度 IEEE754

负数表示法 原码 反码 补码 C语言整数 带符号整数 浮点数 浮点精度 IEEE754

IA-32 浮点处理架构

单精度 双精度

小结:

1、为什么有补码:解决 正负相加为0。

3+(-3)=0

x+(-x)=0

对x各位取反,之后和原x且运算

则,各位均为1,此时不为0,

此时再+1,则为0。

补码:无论x正负、0,各位取反,再加1,即得到补码。

计算机系统基础(一):程序的表示、转换与链接-模块二 第4讲 浮点数的编码表示(2)-网易公开课 https://open.163.com/newview/movie/free?pid=WFVPGEQSL&mid=GFVPGEVLP

补码运算系统是模运算系统 加减运算统一

有符号数和无符号数比较,编译器转化为无符号数比较。

计算机系统基础(一):程序的表示、转换与链接-模块二 第2讲 定点数的编码表示(3)-网易公开课 https://open.163.com/newview/movie/free?pid=WFVPGEQSL&mid=VFVPGEUM3

还搞不懂负数怎么用二进制表示?看完这一篇就懂了 - 知乎 https://zhuanlan.zhihu.com/p/150291780

4

100

-4

32位:

4取反

1111 1111 1111 1111

1111 1111 1111 1111

1111 1111 1111 1111

1111 1111 1111 1011

+1

1111 1111 1111 1111

1111 1111 1111 1111

1111 1111 1111 1111

1111 1111 1111 1100

9

1001

-9

9取反

1111 1111 1111 1111

1111 1111 1111 1111

1111 1111 1111 1111

1111 1111 1111 0110

+1

1111 1111 1111 1111

1111 1111 1111 1111

1111 1111 1111 1111

1111 1111 1111 0111

负数: 绝对值正数的二进制的补码表示

学过计算机组成原理的小伙伴们都知道,在计算机中,负数的二进制是用2的补码表示负数的。

那么,为什么要用这种方式表示负数?有什么好处?

我们一起来看下吧。

为什么用这种方式表示负数

计算机的内存通常都是由8位的字节构成的,所以一个二进制数要存储在很多个的8位的内存中,而通常都是最左边的位为符号位,0表示正,1表示负数。所以不管数字是8位,16位,还是32位,通常都会认为最左边的比特为符号位。

如下图表示:

这种方法看起来是解决了问题,在某些计算机上也确实解决了问题。每个数字由符号位的数据位组成,符号位为0表示正数,而1表示负数。数据位只是表示该数据的绝对值。

其实,这种方法只能用于无符号数值的加法运算,即正数加正数,能正确表示出来,要是要执行减法运算,就会出现问题。不信的话,看下面的例子吧。

现在假设用-8去加12,在计算机中,我们用理项状态下的简单的加法电路的方法去加,会发生什么?

以二进制表示+12为00001100;

以二进制表示 -8(假设情况下) 为10001000;

相加结果如下:

所以结果是-20,是不是很出乎意料?

或许有小伙伴看出问题了,上述中把符号位一起进行相加处理了。那么我们反过来想一下。或许就有答案了。

我们用+4去减掉+12,看一下-8在计算机中是怎么表示的。

以二进制表示+4是00000100;

以二进制表示+12是00001100;

那么,相减的结果是什么呢?

`看起来好像不像对不对,但是它就是-8.

`这里的-8的二进制序列,就是2的补码形式。它表示二进制负数。

那么,补码表示法是怎么计算出来的?

从+9的二进制入手:

00001001

现在对每个二进制取反,将变成,变成0:

11110110

这就叫做1的二进制的补码形式,给这个数加上1,就能得到2的二进制补码形式

11110111

那么,回到原题,我们用-8加到+12上的普通运算:

以二进制表示+12是00001100;

以二进制表示-8是11111000;

加到一起,就是

化为10进制,就是+4.

所以,这种方法是有效的。进位会传递到最左边的所有1上,把他们同时设置为0,所以正确的表示了这种计算方式。

这种方式有什么好处

对于计算机来说,最简便的方法就是最好的办法。使用2进制补码是最高效的办法,使用它的原因是,所有的加法计算都可以用同一种电路完成。上面的例子中,用理想状态下的方法去计算,会得到-20,这并不是正确的结果。所以,这说明了正常的加法运算并不适合正数与负数的加法运算,所以,就需要确定两套规则了,正数加正数,正数加负数,那么,就有两种电路了。

而使用2进制的补码形式,可以用正常的方法去运算,只需要将式子改写成12+(-8)= ? ,这样一来,一套电路就可以实现全部整数的加法了。只需要再开发个补码电路,就可以用一套加法电路实现所有加法运算。

https://baike.baidu.com/item/负数表示法/20855568

在十进制数中,可以在数字前面加上“+”、“一”号来表示正、负数,显然数字电路不能直接识别“+”、“一”号。因此,在数字电路中把一个数的最高位作为符号位,并用0表示“+”号.用1表示“一”号,像这样符号也数码化的二进制数称为机器数。原来带有“+”、“一”号的数称为真值。

对于负数,根据需要的不同,有原码、反码、补码三种表示方法。 [1]

中文名负数表示法外文名negative number representation符号位用1表示表示方法原码、反码、补码类 型十进制数应用学科计算机原理

目录

1 原码

2 补码

3 反码

原码

原码也称“符号——幅度码”,它的尾数部分代表数的绝对值(即幅度大小),符号位代表数的正负号,

是代表正数,

时代表负数,例如x=0.011表示的是+0.375,x=1.011表示的是一0.375。

原码的优点是乘除运算方便.以两数符号位的逻辑加就可简单决定结果的正负号,而数值则是两数数值部分的乘除结果。但原码的加减运算则不方便,因为两数相加,先要判断两数符号是否相同,相同则做加法,不同则做减法,做减法时还要判断两数绝对值大小。以便用大者作为被减数,这样增加了运算时间。

在原码表示,“零”有两种表示方法。例如b=3时,0.000及1.000都表示零,故(b+1)位字长.只能表示(

)个数,即表达

之间的数。 [2]

补码

(1)补码又称“2的补码”。补码中正数与原码正数表示一样。补码中负数是采用2的补数来表示的,即把负数先加上2.以便将正数与负数的相加转化为正数与正数相加,从而克服原码表示法做加减法的困难。

(2)由于负数的补码是2一|x|,故求负数的补码时,实际上要做一次减法,这是不希望的。可以发现,只要将原码正数的每位取反码(1

0,0

1),再在所得数的末位加1,则正好得到负数的补码,这简称为对尾数的“取反加1”。

例如求一0.375的补码表示,只需将0.375所代表的二进制码0.011的每一位数都取反码(1

0,0

1)得到1.100.将此数的末位加1得到1.101,这就是一0.375的补码表示。

(3)补码表示法可把减法与加法统一起来,都采用补码加法。例如做减法时,若减数是正数,则将其变为负数的补码与被减数的补码相加;若减数是负数.则将其变成正数的补码与被减数的补码相加。采用补码做加法,符号位也同样参加运算。如果符号位发生进位,则把进位的1去掉就行了。

(4)任何二进制数与其补码之和等于零(将两数之和的符号位的进位位忽略不计)。

(5)在补码表示中,“零”的表示是唯一的,为0.000(b=3),故(b+1)位字长可表示

个不同的数.即表示从一1~(

)之间的数。

(6)由于补码是“2的补数”,在补码运算中,当两数之和等于或大于1,或者小于一l时,则产生溢出。 [2]

反码

(1)反码又称“1的补码”。和补码一样,反码的正数与原码的正数表示相同。反码的负数则是将该数的正数表示形式中的所有0改为1,所有l改为0,即“求反”。例如x=一0.375,其正数表达式为0.011,将它的0.1全部颠倒,则得1.100,这就是x=一0.375的反码表示。

(2)“零”在反码中有两种表示,0.000与1.111。因而(b+1)位字长可表示

个不同的数,即表示

之间的数。

(3)反码的减法运算也可转换成加法运算。反码在做加法运算时,如果符号位相加后出现进位,则要把它送回到最低位进行相加,即做循环移位与最低位相加。 [2]

相关推荐

古拉巴什竞技场在哪
bat365在线平台官网登录

古拉巴什竞技场在哪

12-22 👁️ 4280
银行卡多久不用会自动注销?资深银行内部员工告诉你答案
欲望爆棚!这部「变态日剧」,三观碎一地
365bet新英体育

欲望爆棚!这部「变态日剧」,三观碎一地

01-12 👁️ 1582
日本自由行:玩遍东京及周边最新的VR体验馆!
.at 顶级域名信息
365bet新英体育

.at 顶级域名信息

09-20 👁️ 8003
囡的解释
365bet新英体育

囡的解释

07-20 👁️ 4294
思杰(Citrix)退出中国了,是被华为、锐捷、深信服卷走的
bat365在线平台官网登录

思杰(Citrix)退出中国了,是被华为、锐捷、深信服卷走的

02-02 👁️ 1139
星际战甲手游神经元获取攻略:三大星球高效刷取地点推荐
华为手机维修指南:从了解售后到成功修复的完整流程攻略