定点数和浮点数

  任何一个数均可以表示为:(N)R=±S×R±e  

 

  R:基值。计算机中常用的R可取2、8、10、16等。

  S:尾数。代表数N的有效数字。计算机中一般表示为纯小数。

  e:阶码(指数)。代表数N的小数点的实际位置。一般表示为纯整数。

 

一、定点数

  定点数:约定计算机中所有数据的小数点位置均是相同的,而且是固定不变的,即阶码e的取值固定不变的机器数表示。

  定点数的两种表示方法:

    定点小数:e=0,表示纯小数,小数点在符号位与最高数值位之间。  定点整数:e=n,表示纯整数,小数点在最低有效数值位之后,在最低位的右边,不占位

                  

 

   【例】

    (123.45)10 = 0.12345×10= 12345×10-2

    (11011.101)= 0.11011101×10= 11011101×2-3

 

二、浮点数

   浮点数用类似(N)R=±S×R±e科学计数法来表达,比如1001.101的规范浮点数表达为1.001101×23

   浮点数的小数点位置不是固定,而是可以浮动的,即e的取值可变。利用改变e值达到了浮动小数点的效果,从而灵活地表达更大范围地实数。因此在机器中必须将e表示出来。     

    浮点数的表示如图

      

 

       尾数的位数决定了数据表示的精度,为带符号的纯小数。

    阶码的位数决定了数据表示的范围,为带符号的纯整数。

 

三、浮点数的规格化

  (1)如何尽可能多地保留有效数字?

  (2)如何保证浮点表示地唯一?

   规格化思想:尽可能去掉尾数中的前置“0”,尽量使小数点后第一位为“1”。对于二进制数,就是要满足:1/2≤|S|<1

  【例】0.001001×25的规格化

     0.001001×25规格化表示为:0.100100×23

 

四、原码规格化

   若[S]=Sf.S1S2..Sn,规格化标志是:S1=1,即:[S]=0.1xx...x 或 [S]=1.1xx...x。

  【例】

    [S]=0.1101101 → [S]=1.1101101  是规格化数

    [S]=0.0101101 → [S]=1.0101101  不是规格化数

五、补码规格化

   若[S]=Sf.S1S2..Sn,规格化标志是:Sf⊙S1=1,即:[S]=0.1xx...x 或 [S]=1.0xx...x。⊙指异或运算 

  【例】

    [S]=0.1101101 → [S]=1.0101101  是规格化数

    [S]=0.0101101 → [S]=1.1101101  不是规格化数

 

 六、IEEE 754浮点数标准

  IEEE 754标准在表示浮点数时,每个浮点数均由三部分组成:符号位S,指数部分E和尾数部分M。

    32位单精度浮点数表示格式如图

    

 

     S:数符,0表示“+”,1表示“-”。

     E:指数,即阶码部分。其中包括1位阶符和7位数值。采用移127码表示,移码值为127。即 阶码=127+实际指数值

     M:共23位。由于尾数采用规格化表示,所以IEEE 754 标准约定在小数点左部有一位隐含位为1,从而使尾数的实际有效位为24位,即尾数的有效值为1.M。

   【例】利用IEEE 754标准将数176.0625表示为单精度浮点数

       解析: ①将十进制转换二进制数:(176.0625)10=(10110000.0001)2

        ②对二进制数进行规格化处理:10110000.0001=1.01100000001×27

        ③将小数部分扩展为单精度浮点数所规定的23位尾数为0110,0000,0010,0000,0000,000

        ④求阶码,指数为7位数值,偏移量为127。E=7+127=134=(10000110)

        最后176.0625的单精度浮点数表示为:0 10000110 0110,0000,0010,0000,0000,000

 

posted @   景池  阅读(2550)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
点击右上角即可分享
微信分享提示