浮点数的表示

为什么要有浮点数

浮点数格式

image-20230423094438330

浮点数的表示范围

image-20230423095141441

 

浮点数尾数的规格化

IEEE 754浮点数的范围[🌟🌟🌟常考选择]

尾数用原码表示,阶码用移码表示(移码符号位与补码相反)

image-20230423102806696

image-20230423103609422

浮点数的加减运算

C语言中的浮点数

定点数与浮点数的区别

 定点数浮点数
数值的表示范围 更大
精度更高 
数的运算 更复杂
溢出问题运算结果超出数的表示范围则溢出运算结果超出数的表示范围不一定溢出

错题集

  1. image-20230423144726958

    答案与解析:
    答案: C
    解析:
    尾数为补码表示,且为1.0xxx或者0.1xxx时为规格化数据,所以需要左移一位,同时阶码-1
  2. image-20230423144758491

    答案与解析:
    答案: B
    解析:
    原码表示时,正数的规格化形式为0.1xxx,负数为1.1xxx
  3. image-20230423144809928

    答案与解析:
    答案: C
    解析:
    对接操作中,只有小阶调整到与大阶一致,不存在阶码减小的情况,AB错误
  4. image-20230423144843716

    答案与解析:
    答案: D
    解析:
  5. image-20230423144950688

    答案与解析:
    答案: A
    解析:
    (f1) = 1100 1100 1001 0000 ... 0000
    (f2) = 1011 0000 1100 0000 ... 0000
    显然第一位都是1,符号相同,都是负数
    f1 = -(1.001)2 * 226
    f2 = -(1.1)2 * 2-30
    显然f1绝对值更大,即x < y
  6. image-20230423145009833

    答案与解析:
    答案: D
    解析:
    I: 对阶是阶码小的变成与阶码大的一致,阶码大的都没溢出,所以肯定不会引起溢出
    II: 右规和尾数舍入过程,阶码+1可能引起阶码上溢
    III: 同II
    IV: 尾数溢出可能只产生误差,不一定溢出
  7. image-20230423145028474

    答案与解析:
    答案: A
    解析:
    C800 0000H = 1100 1000 000 ... 0000
    1. 如果是float型:-1.0*217
    2. 如果是int型:原码为1011 1000 ... 0000 = -7*227