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;

  • 相关阅读:
    国内10大前端团队网站
    可视化搭建前端工程
    Vue CLI环境变量和模式
    BetterScroll:可能是目前最好用的移动端滚动插件
    洛谷月赛
    CF438D The Child and Sequence
    P1447 [NOI2010]能量采集
    Cow Relays,过N条边的最短路
    Numerical Sequence(hard version),两次二分
    洛谷P3237 米特运输
  • 原文地址:https://www.cnblogs.com/Luweir/p/14147301.html
Copyright © 2011-2022 走看看