为何将移码作为浮点数的阶码
来源:互联网 发布:东京大学宣传片 知乎 编辑:程序博客网 时间:2024/06/07 15:20
我们都知道,IEEE754规定32位的浮点数的表示由符号位S(1bit),解码部分E(8bit)和尾数部分M(23)组成。 关于阶码字段E:阶码采用了偏移值为127的移码表示,而对于M约定隐含小数点左边那个1,即尾数部分实际有效位不是23而是24,但在保存时只用了23位。对于阶码,为何不像其他一样采用补码表示,而是用移码来表示? 对于这个问题,我们先来复习一下移码,移码是对于某一个系列或集合的数使它们都映射到正数轴上去,即在数轴上把数都统一往右移动n位,使得所有的数都不为负数。这里我们有E=e+01111111,所以对于所有的E有E大于等于0。这里的话,由于E都不为负数,所以我们直接可以由移码的表示形式看出对应数值的大小(这里是把移码当做无符号数来比较大小的,而不必考虑符号,这里比用补码好多了,补码是要变换成原码再比较的)。其次,用移码表示的话,简化了对于“0”的判断,即当移码的各位都为0的话,那么该移码对应的数据是能够表示的数据中的最小值。此外, 用移码来表示阶码的话可以提高表示数据的精度。如果不是采用移码来表示阶码的话,那么当阶码就会出现负值,这样的话当需要把该数据转换成非阶码浮点数据时我们将就需要对尾数进行左移(做乘法运算),这样的话我们会发现最先移去的是尾数的高位,因此这种方法不利于数据的精度表示。而对于才用移码表示阶码的话,我们在转换时是做右移操作,这样最先移去的是最低位,这样比较好地保持了数据的精度。 所以,浮点数的表示的过程中我们使用的阶码是移码,而不是像其他一般数据采用补码表示。
- 为何将移码作为浮点数的阶码
- 浮点数的阶码,尾数与移码
- 机器数的原码、反码、补码、移码表示以及浮点数的二进制表示
- 数的机器码表示(原码,反码,补码,移码)
- 浮点数的二进制的阶码
- 如何防止GSON的表达整数作为浮点数
- 将ACII码转为浮点数
- 关于php将浮点数转为整数的问题
- 将字符串变成浮点数或整型的函数
- 将输入的浮点数转换成RMB
- C++ 将浮点数的前四位存为string
- 将一个浮点数,转换为指定格式的字符串
- 将 C++ 的成员函数作为回调函数
- C++将类的成员函数作为回调函数
- C++将类的成员函数作为回调函数
- 为何浮点数(float,double)不能直…
- 为何浮点数可能丢失精度(转自MSDN)
- 将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数)
- linux 学习
- 计算机中的字符,字节和编码
- 面试时可以问哪些问题
- C struct 中字节对齐问题
- hibernate中get与load的区别
- 为何将移码作为浮点数的阶码
- 系我一生心,付你千行泪……
- JavaScript实现自动在复制的内容后添加版权声明(转自:http://www.cnblogs.com/zhlnxindie/archive/2010/08/28/1810499.html)
- Google"s BigTable
- 钽电容,追求极致性能的选择
- RouterOS基础知识普及贴关于 MSS 和MTU
- C语言位运算详解
- java之数组学习
- MFC 中CString类转换为char * 类型