zoukankan      html  css  js  c++  java
  • 为什么要用移码来表示阶码(指数)呢?

    为什么要用移码来表示阶码(指数)呢?

    这是为了方便浮点数在进行加减运算时进行对对阶操作,也就是比较大小

    比如(1.01x2^-1)+(1.11x2^3)这两个数相加 ,在科学计数法中,通常是将小阶向大阶看齐。也就是将-1次方变为3次方。

    如果用补码来表示-1:111;用补码表示3:011;很明显二进制中111比011大。所以结果会是第一个数大于第二个数,这是明显不对的。

    所以通常是在阶的基础上加上偏置常数,当偏置常数为4时,-1+4=3;3+4=7;所以结果会是第二个数大于第一个数,这样才正确。

    这就是为什么要用移码来表示浮点数中的阶的原因

    阶码=移码=偏移常数+真值

    那为什么浮点型用(2^(n-1)-1)而不是(2^(n-1))来作为偏移值呢,比如8位机器数采用127而不是128作为偏移值?

    袁春风老师给的解释是阶码11111110以127作为偏移值转化为真值为127

    而以128作为偏移值转化为真值为126

    可以看出偏移值为127时,真值大一些,也就是可表示范围会大一点。

    本来这里我有个疑问是阶码00000001以127作为偏移值转化为真值为-126;而以128作为偏移值转化为真值为-127

    这里可以看出当以128位偏移值时真值会更小,也就是小数点后面的数更多。

    想了一会后,确实可以说明以127作为偏移值可表示范围会更大,但是以128作为偏移值精确度会更高

     

  • 相关阅读:
    Java抽象类、接口能否有构造方法
    Java堆溢出、栈溢出示例
    typora常用快捷键
    什么是业务逻辑
    解决idea登录github出现的invalid authentication data 404 not found
    SQL常用聚合函数
    oracle存储过程/函数调试
    解决IDEA全局搜索Ctrl+Shift+F失效问题
    如何在win10系统中使用Linux命令
    Java复现NullPointerException异常
  • 原文地址:https://www.cnblogs.com/roscangjie/p/12237725.html
Copyright © 2011-2022 走看看