计算机中的定点和浮点表示

来源:互联网 发布:美国反对美国 知乎 编辑:程序博客网 时间:2024/04/25 21:26

N = S * r^j;     S为尾数,j为阶码,r为基数 【在计算机中,尾数为小数,可正可负且正负决定了整个数的正负,阶码为整数,也可正可负】
r可以取2、4、8、16等,当r取4的时候,尾数中的两位二进制数表示尾数中的一位四进制数,以此类推。

问题:一个n位长的尾数,和m位长的阶码的浮点表示,能表示的最大的负数,最小的负数,最小的正数和最大的正数。尾数为原码表示
  • 最小的负数:尾数为1,1...1,阶码为0,1...1
  • 最大的负数:尾数为1,0...1,阶码为0,1...1
  • 最小的正数:尾数为0,0...1,阶码为1,0...0
  • 最大的正数:尾数为0,1...1,阶码为0,1...1
  • 当一个数在0到最小的正数和最大负数之间的时候,称为下溢,当一个数小于最小负数或者大于最大正数的时候,称为上溢
  • 当一个数下溢的时候,按照机器0处理,当一个数上溢的时候,会按照计算出错处理。

问题:浮点数的规格化形式
  • r = 2,尾数最高位为1
  • r = 4,尾数最高两位不全为0
  • r = 8,尾数最高三位不全为0
  • ...
问题:尾数的规格化
  • r = 2
    • 左规:尾数左移1位,阶码减1
    • 右规:尾数右移1位,阶码加1
  • r = 4
    • 左规:尾数左移2位,阶码减1
    • 右规:尾数右移2位,阶码加1
  • ...
结论:基数r越大,可表示的浮点数的范围就越大,但是表示精度越低。

技巧:当求最大最小正负数的时候,可以先写出真值形式的表达方式,然后再转化成相应的码制。
关于机器零
0 0
原创粉丝点击