简易讲解定点数与浮点数

简易讲解定点数与浮点数

1. 定点数:由程序设计者约定,该程序中所有数的小数点固定在同一位置不变。

例:

  1. 我们约定小数点位于符号位后(带符号的定点小数)

    计算机中存储为 1010111(第一位1为符号位,表示负数)
    实际含义:-0.010111
    分辨率(精度):2^{-n}

  2. 我们约定小数点位置固定在最后一位(带符号的定点整数)

    计算机中表示: 10101110
    实际含义: -0101110.
    分辨率(精度):1

2.浮点数:小数点的位置可按需要浮动。

结构:

N = ±R^{±E}*M
浮点数N的尾数为M,阶码为E,阶码底为R。

  1. 尾数:定点小数,即浮点数的小数部分。使用原码或补码表示,其位数决定数的精度;其数符±表示数的正负。

  2. 阶码底:隐约约定,一般为2。

  3. 阶码:定点整数,补码或移码表示。其位数决定数值范围;阶符±表示阶码的正负。

    这种设计可以在某个固定长度的存储空间内表示定点数无法表示的更大范围的数

例:

  • 若不对浮点数的表示做出明确规定,同一个浮点数的表示就不是惟一的。
    例:(1.75)10 = (1.11)2 = 1.11*20 = 0.111*1
  • IEEE-745浮点格式
    在这个标准出来之前,各个公司各用不同的标准,导致软件的可移植性差。为此,IEEE制定了IEEE-754标准,被绝大部分公司所采用。
    1. 单精度格式(float):符号位1位,阶码8位,阶码偏移量127(即原阶码加127),尾数23位,约定小数点位于尾数域的最前面

      计算机中存储:符号位(1位)+阶码(8位)+尾数(23位)

      例:将20.5用浮点数表示。
      20.5为正数故符号位为0
      首先将其转化为二进制数。有(20.5)10 = (10100.1)2
      为10100.1 = 1.01001*24
      原阶码偏移127后:127+4 = (131)10 = (10000011)2
      尾数为:01001000000000000000000
      故20.5的单精度浮点表示为:0 10000011 01001000000000000000000

    2. 双精度格式(double):和单精度相似,不再赘述。

欢迎指正任何错误与提出任何疑问,24h内回复。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容