1.计算机中定点数的表示ui
表1 定点数的表示spa
|
+18table |
-18扩展 |
8位原码方法 8位补码im 16位原码layout 16位补码top |
00010010img 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标准格式