浮点数的表示

浮点机器数用于表示实数,其小数点的位置由其中的阶码规定,因此是浮动的.
浮点数N的构成

尾数M:为定点小数,尾数的位数决定了浮点数有效数值的精度,尾数的符号代表了浮点数的正负,因此又称为数符。尾数一般采用原码和补码表示。

阶码E:为定点整数,阶码的数值大小决定了该浮点数实际小数点位置与尾数的小数点位置(隐含)之间的偏移量。阶码的位数多少决定了浮点数的表示范围。阶码的符号叫阶符。阶码一般采用移码和补码表示。

阶码的底R:一般为2、8或16 ,且隐含规定

image.png|575

举个例子

例如以下由二进制表示的单精度浮点数
0 10000001 01100000000000000000000
各个部分的意义:

  • 符号位: S = 0 —> 所以是正数
  • 指数E = 129 —> (129) - 127 = 2
  • 尾数M = = 1.375
  • 阶码的底一般为2或8或16,隐形提出
    所以实际值就是

尾数的计算方式如下:

浮点数的表示范围

浮点数遵循公式:

其中:

  • S:符号位(决定正负)
  • M:尾数(1 ≤ M < 2)
  • E:指数
  • Bias:偏移量(单精度 127,双精度 1023)
    指数 E 有上下限,意味着浮点数的可表示范围是有限的。

最小复数<—>最大附属 && 最小正数<—>最大正数

image.png

当一个非零数的绝对值小于能表示的最小非零浮点数时,计算机会把它当作 0
这个现象称为舍入为机器零(Rounded to Zero)

在单精度下:

  • 机器零 ≈

也就是说,小于这个数的所有非零结果在计算中都被视为 0。

校验码

  1. 校验码定义:是一种具有发现某些错误或自动改正错误能力的一种数据编码方法。
  2. 校验码目的:用于检查或纠正在存取、读写和传送数据的过程中可能出现的错误。
  3. 校验码的基本思想:“冗余校验”,即通过在有效信息代码的基础上,添加一些冗余位来构成整个校验码。
  4. 校验码的构成:有效信息+校验位(由有效信息产生的冗余位)

码距

假设一种校验码的码距为dmin,且码距为奇数

  • 校验码能检测错误的最小个数是: dmin - 1
  • 校验码能纠正错误的最小个数是:

假设一种校验码的码距为dmin,且码距为偶数

  • 校验码能检测错误的最小个数是:
  • 校验码能纠正错误的最小个数是:

举例:

  • dmin = 3
    • 能检测出最多 2 位错误;
    • 能纠正 1 位错误。
  • dmin = 5
    • 能检测出最多 4 位错误;
    • 能纠正 2 位错误。

海明校验码

  • 信息码: k位
  • 校验码: r位
  • 编码长度: n = m + k

需要满足 2^r >= k + r + 1
比如: k = 8 时, 需要 r = 4 使 2^4 >= 8(最大可以为11) + 4 + 1

CRC 校验

计算可以参考视频: CRC循环校验视频讲解