浮点数标準


浮点数标準

文章插图
浮点数标準【浮点数标準】浮点数是指一个数的小数点的位置不是固定的 , 而可以浮动 。浮点数标準 , 也称IEEE二进制浮点数算术标準(IEEE 754) , 是20世纪80年代以来最广泛使用的浮点数运算标準 , 为许多CPU与浮点运算器所採用 。这个标準定义了表示浮点数的格式(包括负零-0)与反常值(denormal number)) , 一些特殊数值(无穷(Inf)与非数值(NaN)) , 以及这些数值的“浮点数运算符”;它也指明了四种数值捨入规则和五种例外状况(包括例外发生的时机与处理方式) 。
基本介绍中文名:浮点数标準
外文名:Floating-point number standard
学科:计算机组成原理
别名:IEEE二进制浮点数算术标準
目的:规定浮点数规则以及运算细节
提出者:IEEE
简介在计算机系统的发展过程中 , 曾经提出过多种方法表示实数 , 但是到为止使用最广泛的是浮点表示法 。相对于定点数而言 , 浮点数利用指数使小数点的位置可以根据需要而上下浮动 , 从而可以灵活地表达更大範围的实数 。浮点数表示法利用科学计数法来表达实数 。在IEEE-754标準出现之前 , 业界并没有一个统一的浮点数标準 , 相反 , 很多计算机製造商都在设计自己的浮点数规则以及运算细节 。为了便于软体的移植 , 浮点数的表示格式应该有一个统一的标準 。1985年 , IEEE(Institute of Electrical and Electronics Engineers , 美国电气和电子工程师协会)提出了IEEE-754标準 , 并以此作为浮点数表示格式的统一标準 。几乎所有的计算机都支持该标準 , 从而大大改善了科学应用程式的可移植性 。IEEE标準从逻辑上採用一个三元组{S, E, M}来表示一个数N , 它规定基数为2 , 符号位S用0和1分别表示正和负 , 尾数M用原码錶示 , 阶码E用移码錶示 。根据浮点数的规格化方法 , 尾数域的最高有效位总是1 , 由此 , 该标準约定这一位不予存储 , 而是认为隐藏在小数点的左边 , 因此 , 尾数域所表示的值是1.M(实际存储的是M) , 这样可使尾数的表示範围比实际存储多一位 。为了表示指数的正负 , 阶码E通常採用移码方式来表示 , 将数据的指数e 加上一个固定的偏移量后作为该数的阶码 , 这样做既可避免出现正负指数 , 又可保持数据的原有大小顺序 , 便于进行比较操作 。IEEE 754规定了四种表示浮点数值的方式:单精确度(32位)、双精确度(64位)、延伸单精确度(43比特以上 , 很少使用)与延伸双精确度(79比特以上 , 通常以80位实现) 。只有32位模式有强制要求 , 其他都是选择性的 。大部分程式语言都有提供IEEE浮点数格式与算术 , 但有些将其列为非必需的 。例如 , IEEE 754问世之前就有的C语言 , 有包括IEEE算术 , 但不算作强制要求(C语言的float通常是指IEEE单精确度 , 而double是指双精确度) 。该标準的全称为IEEE二进制浮点数算术标準(ANSI/IEEE Std 754-1985) , 又称IEC 60559:1989 , 微处理器系统的二进制浮点数算术(本来的编号是IEC 559:1989) 。后来还有“与基数无关的浮点数”的“IEEE 854-1987标準” , 有规定基数为2跟10的状况 。最新标準是“ISO/IEC/IEEE FDIS 60559:2011” 。标準一个浮点数 (Value) 的表示其实可以这样表示: