zoukankan      html  css  js  c++  java
  • csapp:浮点数的阶码为什么要用移码表示而不是补码?

    日常生活中我们对小数进行加减法时,为了方便,通常先把它们的指数化成一致,再比较前面的数值部分;

    比如1e-3与1e-1,我们化为1e-3和100e-3,这样就能很明显的得到结果 99e-3了,同样,在计算机中亦是如此;

    设想以单精度的浮点数为例,阶码有8位,能表示-128~127之间的数字;而我们在对其阶码进行比较时,如果不偏置,那么0010xx和1000xx在计算机眼中就会认为后者较大,而其实后者是负数;所以这样的话,计算机得先把它们化成原码,再对其进行比较,比较繁琐;

    而当浮点数的阶码采用移码的形式时(偏置127),即E=e-Bias (e∈[1,254],0和255是特殊的值,不呢能取),那么E∈[-126,127],所以浮点数阶码中储存的e全为正数,可直接比较,不用转换成原码再进行;而实际表示的浮点数的指数部分取值范围就是E的取值范围,所以浮点数的精度为-126~12;

    补充一个问题:在观看CSAPP的视频时,里面有个学生提出:为什么这个偏置值要取2k-1-1呢?
    教授的回答是:exp的取值范围为[1,254],而E作为最后小数的指数,它所表示的精度要对半分,非负数要占一般,正数要占一半,而exp只能取254个值,自然最后E的范围只能为[-126,127],只有这样才能刚好对半分,根据Bias=exp-E,从而得到Bias的值为127;

  • 相关阅读:
    最值
    算数平均值/加权平均值
    jdbatemplate使用
    所有正规jar包
    java代码在计算机中经历的三个阶段,反射的原理
    lambda函数式编程思想
    重写equals方法
    安全牛-弱点扫描
    安全牛-主动收集
    安全牛-被动收集
  • 原文地址:https://www.cnblogs.com/Luweir/p/14147301.html
Copyright © 2011-2022 走看看