IEEE-754浮点标准简介
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IEEE-754浮点标准简介相关的知识,希望对你有一定的参考价值。
参考技术A直至20世纪70年代末, 实数(十进制数)被不同的计算机厂商表示成不同的二进制形式, 这使得许多程序与不同的机器不兼容. 1980年IEEE委员会将实数的浮点数据表示进行了标准化. 该标准大部分由Intel基于8087数学协处理器定制的. 认识到不同的程序需要不同的精度, 因此建立了单精度和双精度. 而今几乎所有的软件和硬件公司都遵循这些标准, 因此有必要做一些了解.
IEEE单精度浮点数使用32位数据表示 到 范围内的正负实数. 转换为十进制大约是 到 的正负实数. 这种单精度浮点数有时也叫短实数. 32位单精度形式的赋值如下图所示:
为了数学处理器的硬件设计更简单以及更少的晶体管消耗, 指数部分被加上一个常数 作为偏置指数. 从实数转换为浮点有以下步骤:
例1 : 将 转换成单精度(短实数)浮点.
= = 二进制科学计数法 1.00111 E 3
正数b31 = 0
偏置指数b30-23为1000 0010(3+7F=82H)
有效数字位b22-0为 001110000000000000000…00.
综合给出二进制形式, 下面一行是16进制值
例2 : Convert decimal 15.575 to IEEE single-precision standard.
例3 : Convert decimal –0.00075 to IEEE single-precision standard.
验证程序(c):
双精度浮点数(Intel称之为长实数)可以表示 到 的正负实数. 52位有效数字, 11位指数, 第63位表示符号. 转换过程和单精度浮点一样, 首先表成1.xxx E yyy, 然后yyy加3FF得到偏置指数. 如下图所示:
例4 : Convert decimal 152.1875 to double-precision FP.
152.1875 = 二进制10011000.0011 = 科学二进制1.00110000011 E 7
b63 = 0
偏置指数b62-53 = 10000000110 (7+3FF=406)
有效数字位b52-0 = 00110000011000…..000
[1]. Muhammad Ali Mazidi etc. ARM Assembly Language Programming & Architecture [M]. section5.3
[2]. IEEE_754
[3]. Unit in the last place
将十进制数表示成ieee754标准的32浮点规格化数 27/64
27/64=0.427815=(0.011011)B因为尾数最高位为1(规定的并且是隐含的即不显示的),尾数有23位 所以尾数为:101 1000 0000 0000 0000 0000
阶码移码表示(127移码)e=-2+127=125=01111101b
即整个数为:1011 1110 1101 1000 0000 0000 0000 0000 参考技术A 27化为二进制11011
64=2的6次方
27/64等于11011向左移6位,即0.011011,也等于1.1011乘以2的负2次方
以上是关于IEEE-754浮点标准简介的主要内容,如果未能解决你的问题,请参考以下文章
Java虚拟机规范阅读IEEE754简介以及Java虚拟机中的浮点算法