4. 浮点数-软件设计师学习笔记

文摘   教育   2024-03-27 23:30   云南  


【目录】


  • 1. 浮点数的概念

  • 2. 浮点数的表示

  • 3. 浮点数与浮点数之间的运算过程

  • 4. 浮点数特点

  • 5. 真题回顾

  • 6. 总结


【正文】

1. 浮点数的概念

浮点数是小数点位置不固定的数。

【示例】

1.23*10^4 = 12.3*10^3

小数点的位置可以移动,因此是浮点数。

当机器字长为n时:
定点数的补码和移码可表示2^n个数。
定点数的原码和反码只能表示2^(n-l)个数(0的表示占用了两个编码)。
因此,定点数所能表示的数值范围比较小,在运算中很容易因结果超出范围而溢出。
浮点数是小数点位置不固定的数,它能表示更大范围的数

2. 浮点数的表示

【表示】

N = 尾数 * 基数^指数

指数也称为阶数。

计算机采用二进制,因此计算机中的基数通常是2

【十进制示例】

1.23*10^4中:

  • 尾数 = 1.23
  • 基数 = 10
  • 指数 =阶数= 4

【二进制示例】

1011.10101B= 0.101110101*2^4=0.0101110101*2^5

二进制中:
小数点向左移4位,则乘以2^4。(这里的2就等同于10进制中的10)
小数点向左移5位,则乘以2^5

计算机采用二进制,因此计算机中的基数通常是2
0.101110101*2^4中:

  • 尾数 = 0.101110101
  • 基数 = 2
  • 指数 =阶数= 4

3. 浮点数与浮点数之间的运算过程


  1. 对阶:将阶数统一成一个数,对阶时,小阶向大阶看齐

    1. 尾数计算

    1. 结果格式化

    【目标任务】

    计算1.23*10^4 + 2.3*10^2

    【思路分析】


    1. 对阶
      阶数有2个,一个是4,一个是2。
      对阶时,小阶向大阶看齐,因此将2变成4。
      2.3*10^2=0.023*10^4

    1. 尾数计算
      (1.23+0.023)*10^4

    4. 浮点数特点

    在浮点表示法中,阶码为带符号的纯整数,尾数为带符号的纯小数。

    浮点数的表示格式如下:

    1

    N = 尾数 * 基数^阶码
    工业标准IEEE 754中一般尾数用原码,阶码用移码
    阶码的位数决定数的表示范围,位数越多范围越
    尾数的位数决定数的有效精度,位数越多精度越
    对阶时,小数向大数看齐
    对阶时通过较小数的尾数右移实现的。
    0.23变成0.023,尾数是向右移动的。

    5. 真题回顾

    【例题1】

    对于长度相同但格式不同的两种浮点数,假设前者阶码长、尾数短,后者阶码短、尾数长,其他规定都相同,则二者可表示数值的范围和精度情况为( )。
    A.二者可表示的数的范围和精度相同
    B.前者所表示的数的范围更大且精度更高
    C.前者所表示的数的范围更大但精度更低
    D.前者所表示的数的范围更小但精度更高

    【思路解析】

    长度相同表示比特位数相同。
    阶码、尾数不一致则范围和精度不会相同,A选项错误。
    大家观察答案,考的都是前者,因此我们不用去分析后者。 阶码长表示范围大,因此D选项错误。 尾数长表示精度高,尾数短则精度低,因此B选项错误。

    正确答案:C

    【例题2】

    浮点数的表示分为阶和尾数两部分。两个浮点数相加时,需要先对阶,即( )(n为阶差的绝对值)。
    A.将大阶向小阶对齐,同时将尾数左移 n 位
    B.将大阶向小阶对齐,同时将尾数右移 n 位
    C.将小阶向大阶对齐,同时将尾数左移 n 位
    D.将小阶向大阶对齐,同时将尾数右移 n 位

    【思路解析】

    对阶时小阶向大阶看齐,因此AB错误。
    对阶时尾数是向右移的。因此C选项错误。

    正确答案:D

    【例题3】

    某种机器的浮点数表示格式如下(允许非规格化表示)。若阶码以补码表示,尾数以原码表示,则1000100000000001表示的浮点数是()。

    2

    【思路解析】

    A.(2^(-10))*(2^(-16))
    B.(2^(-10))*(2^(-15))
    C.(1-2^(-10))*(2^(-16))
    D.(1-2^(-10))*(2^(-15))

    某种机器则表示基数=2
    规格化表示的浮点数是,前面是尾数,后面是阶数。
    非规格化表示意思是尾数和阶数的前后的顺序与上面的不一致。
    阶数=补码
    尾数=原码
    根据上述图片可知,前5位为阶码:
    阶码=补码=10001,然后求出该码的原码:
    原码:11111
    反码:10000(取反得原码)
    补码:10001(减1得反码)
    然后将原码转换为10进制数:
    原码:11111=-(2^3+2^2+2^1+2^0)= -(8+4+2+1)=-15
    即阶数=-15

    剩下的11位为尾数。
    即尾数=原码=00000000001
    注意尾数是小数,最高位0表示是正数。
    00000000001转换成十进制是2^(-10)
    该浮点数= (2^(-10))*(2^(-15))

    正确答案:B

    【例题4】

    浮点数能够表示的数的范围是由其()的位数决定的。

    A.尾数
    B.阶码
    C.数符
    D.阶符

    尾数越长精度越高,阶码越长范围越大。

    正确答案:B

    【例题5】

    设16位浮点数,其中阶符1位、阶码值6位、数符1位、尾数8位。若阶码用移码表示,尾数用补码表示,则该浮点数所能表示的数值范围是( )。

    A.-2^64~(1-2^(-8))*2^64
    B.-2^63~(1-2^(-8))*2^63
    C.-2^64~(1-2-(1-2^-8)*2^64~(1-2^-8)*2^64
    D.-(1-2^(-8))*2^63~(1-2^(-8))*2^63

    【思路解析】

    阶数是整数:
    n=4时,移码能表示的最大整数是7=2^3-1=2^(n-1)-1
    n=4时,移码能表示的最小整数是-8=-2^3=2^(-n-1)

    • 阶码=移码=7位(有1位是符号位):
      能表示的最大值是2^6-1=64-1=63
      能表示的最小值是-2^6=-64

    尾数是小数:
    n=4时,补码能表示的最大定点小数是1-2^(-3)
    n=4时,补码能表示的最小定点小数是-1

    • 尾数=补码=9位(有1位是符号位)
      n=9时,补码能表示的最大定点小数是1-2^(-8)
      n=9时,移码能表示的最小定点小数是 -1

    因此该浮点数
    能表示的最小数为-2^63
    能表示的最大数是(1-2^(-8))*2^63

    正确答案:B

    6. 总结

    【小结】

    【章节总结】

    4第一章 计算机系统1


    安迪python学习笔记
    python学习笔记,适合初学者。
     最新文章