`
starbhhc
  • 浏览: 631509 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

浮点数的0和无穷表示法

阅读更多
浮点数的0和无穷表示法



        浮点数的表示随机器的不同而不同,最常见的一种形式是ieee-754标准。这个标准很流行,值得我们深入的研究一下。你可以在你的平台上寻找ieee754.h文件来查看相关信息。
一个ieee-754的float(4 bytes)或者double(8 bytes)由三部分构成(在ieee-854标准下还有一个类似的96bit的扩展精度格式):一个符号位说明这个数是正还是负,一个指数给出了它的数量级和一个尾数给出了实际的数字。用单精度浮点数(float)作为例子,下面是它的位结构。
seeeeeeeemmmmmmmmmmmmmmmmmmmmmmm
31                              0    bit #

        s = 符号位, e = 指数, m = 尾数

        这个数的值是尾数的2的x次方倍,这里的x是上面的eeeeeee,即指数。注意我们正在处理的是二进制片段,做好二进制,十进制,十六进制互相转换的准备。
对于存储尾数和指数存在一个潜在的问题:2x10^-1 = 0.2x10^0 = 0.02x10^1等。这对于同一数字将导致许多不同的位模式表示方式,并且因此可能造成巨大的浪费(可能使硬件实现数学运算变得困难并且变慢),因为此时一个数可能会有很多种表示方式。这个问题可以通过将尾数解释为小数点后面的部分并且隐含的在小数点的前面是1这种方式来解决(二进制)。现在将这种方式称为\"1.m\"表示法。比如尾数1000表示1.1000,也就是十进制的1.5,在后面将给出实际的例子,有助于理解。尾数部分决定了以后,剩下的工作就是设置正确的指数部分来重新构造原来的数。

        但是0怎么办?ieee标准委员会将0看做一种特殊情况:忽略符号位如果每一位都是0,那么这个数被看做0.

        到现在,看上去我们还没有办法表示比1.0小的数(注:因为全是0的方案被0这个数占据了)。解决的方法是不直接解释指数位。一个单精度的浮点数采用\"shift-127\"编码,意思是实际的指数是eeeeeeee减掉127.也就是将eeeeeeee看做有符号的数。

         0不是唯一的特殊情况的浮点数。还有正无穷、负无穷和非数字值。这些是如何表示的?如果指数的每一位都被设置,那么这个数就被认为是无穷大的,如果指数位的每一位都被设置,并且尾数位的任意一位被设置,那么这个数被定义为nan.对上面的数来说,符号位仍然是有效的。可以是正也可以是负无穷,可以是正nan,也可以使负nan.

分享到:
评论

相关推荐

    float-regex:正则表达式以匹配javascript表示法中的浮点数

    浮动正则表达式javascript 表示法中真实浮点值的正则表达式: module . exports = / [ -+ ] ? (?: \d * \. ? \d + | \d + \. ? \d * ) (?: [ eE ] [ -+ ] ? \d + ) ? / ; 不匹配: +/- 无穷大NaN例子锚定一个字符串...

    【02-数据类型与运算符】

    注释  • 单行注释 用双斜线 ”//” 表示  • 多行注释 用 /*----... •所有的正无穷大都是相等,负无穷大都是相等,,而非数不与任何数值相等,与自己也不相等,只有浮点数除0 才可以 得到这三个数,整数除0将报错;

    程序员二进制计算器 v1.36

    2-浮点数表示法 (1)小数点前后的省略表示 3.14 3. = 3.0 .14 = 0.14 (2)用科学计数法表示浮点数 3e2 = 300 3e+2 = 300 3e-2 = 0.03 3.e2 = 300 3.e+2 = 300 3.14e-2 = 0.0314 .14e+2 = 14 3-字符...

    浅谈python中的数字类型与处理工具

    python中的数字类型工具 python中为更高级的工作提供很多高级...整数的表现形式以十进制数字字符串写法出现,浮点数带一个小数点或者使用科学计数法e来表示。在python2版本中,整数还分为一般整数(32位)和长整数

    C 语言编程常见问题解答.chm

    12.13 适用于整数和浮点数的数学函数分别有哪些? 12.14 什么是多字节字符(multibyte characters)? 12.15 怎样操作由多字节字符组成的字符串? 第13章 时间和日期 13.1 怎样把日期存储到单个数字中?有这...

    C语言编程要点

    12.13. 适用于整数和浮点数的数学函数分别有哪些? 184 12.14. 什么是多字节字符(multibyte characters)? 185 12.15. 怎样操作由多字节字符组成的字符串? 186 第13章 时间和日期 186 13.1. 怎样把日期存储到单个数字...

    你必须知道的495个C语言问题

    5.16 考虑到有关空指针的所有这些困惑,要求它们的内部表示都必须为0不是更简单吗? 5.17 说真的,真有机器用非零空指针吗,或者不同类型用不同的表示? 地址0上到底有什么? 5.18 运行时的整数值0转换为指针...

    lua-bint:纯Lua中的任意精度整数算术库

    该库的设计遵循最新的Lua整数语义,这意味着整数溢出会扭曲,有符号整数是使用双补码算术规则实现的,整数除法运算朝负无穷大舍入,任何带有浮点数的混合运算都会将值提升为浮点数,并且通常的除法/电源操作始终会...

    基于AT89S52 单片的频率计

    结果的显示格式采用科学计数法,即有效数字乘以10 为底的幂。这里设计的频 率计用4 位数码管显示测量结果。 定时方法实现频率测量。定时方法测量的是待测信号的周期,这种方法只设 一种量程,测量结果通过浮点数运算...

    《你必须知道的495个C语言问题》

    5.16 考虑到有关空指针的所有这些困惑,要求它们的内部表示都必须为0不是更简单吗? 60 5.17 说真的,真有机器用非零空指针吗,或者不同类型用不同的表示? 61 地址0 上到底有什么? 61 5.18 运行时的整数值0...

Global site tag (gtag.js) - Google Analytics