计算机数的表示

1.计算机中定点数的表示

计算机数的表示

表1 定点数的表示

 

+18

-18

8位原码

8位补码

16位原码

16位补码

00010010

00010010

0000000000010010

0000000000010010

10010010

11101110

1000000000010010

1111111111101110

计算机中定点数一般用补码表示,好处是可以把减法变加法。对一个数的补码取负数,只要对每一位(包括符号位)按位取反,并在末尾加1。做减法时,A-B=A+(B的负数)=A+(B按位取反加1)。加法和减法都会有溢出,判断方法:如果A和B的最高位一样,且结果的最高位与A和B的最高位不一样,表示溢出。此外,还可以用双符号位,结果中两位符号位不同表示溢出。由于此方案需要额外占用一位寄存器空间,因此计算机通常不采用。

2.计算机中的浮点数表示

定点数表示范围有限,太大或太小的数都不能表示,精度也有限,用定点数做除法不精确,需要一种方法表示实数,计算机中叫做浮点数。现在计算机中通常使用IEEE 754标准。

浮点数有3部分组成:符号位、阶码和尾数。在32位浮点数中,符号位为1位,表示正负,尾数32位,表示数值,阶码8位,表示乘以2的多少次方。其中,8位阶码表示0~255的数,负阶码用阶码值减去偏移量127表示。浮点数的数值等于(尾数X2(阶码-偏移值))。

 

浮点数有单精度和双精度之分,单精度是32位,双精度是64位,还有扩展的单精度和双精度,例如X86中采用80位表示扩展的双精度,其它处理器采用64位。 

 

计算机数的表示 

特殊情况:以单精度为例,阶码e的值在0~255之间,其中0和255表示特殊的数,1~254表示正常的数。

(1)阶码范围是0<e<255时表示规格化数

(2)阶码为0时表示非规格化数或正负零。当阶码等于0时,如果f全等于0表示正0和负0,如果f不全等于0表示非规格化数.

(3)阶码为255时表示无穷大或者非数。阶码等于255,尾数为0,符号位0或1分别表示正无穷大或负无穷大。如果尾数不为0表示非数。非数有两个,Quiet NaN和Signaling NaN。Quiet NaN尾数的最高位等于0,运算结果还是Quiet NaN。Signaling NaN的最高位等于1,如果参与运算将产生中断。

 

注:(1)规格化是指通过移位将浮点数尾数最高位变为1。非规格数用于填补最小数和0之间的空隙。

(2)IEEE754标准格式

计算机数的表示

 

 

转载于:https://my.oschina.net/u/129126/blog/265956