IEEE 754 浮点数机器表示标准
32位字长浮点数:
共32位
|
1 |
8 |
23 |
|
符号位 |
解码 |
尾数 |
|
0 + 1 - |
移127码 |
原码,隐含小数点前的首位1 |
不同数据类型之间转换时,隐藏着一些不容易被察觉的错误,比如int 和 unsigned
1. int 2 float时,有效数字可能舍去。
2. int转为double时,理论上是安全的
3. double转为float时,可能发生溢出,数据可能被舍入。
4. 32位架构unsigned int经验上限:2^32 -1 = 4294967295 // 42亿9千万
特别的:
1. 全0解码全0尾数: +0和-0,+/-取决于符号位
2. 全0阶码非全0尾数:非规格化数
用于处理阶码下溢,使得出现比最小规格化数更小的结果时,程序能继续运行。
3. 全1阶码全0尾数: +无穷或负无穷,取决于符号位。
可能按NaN,非数处理
也可能产生明确的结果。
4. 全1阶码非0尾数:NaN
非数,NaN,根据尾数最高位的不同决定是否进行异常处理。
5. 阶码非全0非全1:规格化非0数
因为特殊值的存在,除去全0全1解码后,单精度阶码个数为254,最大阶数为127。
C语言中 float 和 double 分别对应IEEE753的单精度和双精度。
但 long double 要根据处理器微架构做改变。
比较新的新事物尚未有统一标准。
补充:Intel采用80位双精度扩展格式(Long double),相比IEEE754,它的尾数没有隐藏位,有效位共64位。
可以在这个网站在线调试运行结果。
IEEE 754 浮点数机器表示标准的更多相关文章
- IEEE 754 浮点数在计算机中的表示方法
IEEE二进制浮点数算术标准(IEEE 754)是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用.这个标准定义了表示浮点数的格式(包括负零-0)与反常值(denorma ...
- IEEE 754浮点数表示标准
二进制数的科学计数法 C++中使用的浮点数包括采用的是IEEE标准下的浮点数表示方法.我们知道在数学中可以将任何十进制的数写成以10为底的科学计数法的形式,如下 其中显而易见,因为如果a比10大或者比 ...
- IEEE 754 浮点数加减运算
电子科技大学 - 计算机组成原理 小数的十进制和二进制转换 移码 定义:[X]移 = X + 2n ( -2n ≤ X < 2n ) X为真值,n为整数的位数 数值位和X的补码相同,符号位与补码 ...
- IEEE 754 浮点数的四种舍入方式
四种舍入方向: 向最接近的可表示的值:当有两个最接近的可表示的值时首选"偶数"值:向负无穷大(向下):向正无穷大(向上)以及向0(截断). 说明:默认模式是最近舍入(Round t ...
- IEEE二进制浮点数算术标准(IEEE 754)
整理自IEEE 754 IEEE二进制浮点数算术标准(IEEE 754)是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用.这个标准定义了表示浮点数的格式(包括负零-0) ...
- 基于 IEEE 754 标准的 单精度浮点数计算方式 (未完成)
def dec2bin(dec): if dec < 0: s = ' dec = dec * (-1) else: s = ' e = 127 dec = float(dec) r = int ...
- IEEE 754标准--维基百科
IEEE二进制浮点数算术标准(IEEE 754) 是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用.这个标准定义了表示浮点数的格式(包括负零-0)与反常值(denorm ...
- IEEE 754二进制浮点数算术标准
可能很多人都遇到过浮点数精度丢失的问题,下面以JavaScript为例. 1 - 0.9 = 0.09999999999999998 纳尼,不应该是0.1么,怎么变成0.099999999999999 ...
- 打印一个浮点数组,会输出字符串"Hello, world“ & 浮点数的二进制表示(IEEE 754标准)
#include <stdio.h> #include<stdlib.h> int main() { float a[3] = { 1143139122437582505939 ...
随机推荐
- JAVA静态代理模式(从现实生活角度理解代码原理)
代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问. 代理模式说白了就是"真实对象"的代表,在访问对象时引入一定程度的间接性,因为这种间接性可以附加多种用途. 在 ...
- xcode8打包ipa文件, application loader上传成功,但是iTunes Connect不显示构建版本
最近更新的Xcode8.今天提交新项目时.按照以往的流程走 Xcode 编译ipa文件.applicaiton loader提交成功 但是.iTunes connect构建版本不显示.非常疑惑.平时等 ...
- Mac Security工具使用总结
Security是Mac系统中钥匙串和安全模块的命令行管理工具,(图形化工具为Keychain Access.app).钥匙串(Keychain)实质上就是一个用于存放证书.密钥.密码等安全认证实体的 ...
- IOS开发基础知识--碎片29
1:心跳效果,并可去除心跳 - (void)initScaleLayer { self.view.backgroundColor=[UIColor blueColor]; UIButton *myTe ...
- python之import子目录文件
问题: 在pre_tab.py文件下: print("AA") from test.te import login1 login1() from test.te import ...
- linux版基金看板
程序员的吊丝们,还在害怕上班时偷偷看基金被老板发现吗?今天你们的福利来了,专属程序员吊丝一族的礼物,linux版基金看板. 优点: 1.自定义设置关注基金 2.linux系统,让别人可以以为你一直都在 ...
- ORA-04063: view "SYS.DBA_REGISTRY" has errors
测试环境做了RMAN还原(从10.2.0.4.0 32bit 还原到 10.2.0.4.0 64bit)后,查询dba_registry系统视图时报如下错误 SQL> select comp_ ...
- 如何查看MapReduce执行的程序中的输出日志
我们开发程序的时候,好多人都喜欢用sysout输出内容来查看运行情况.但是在MR程序里写了之后,却不知道去哪里查找,可以参考这篇文章. 第一种方法,我们可以在MapReduce任务查看页面找到这些日志 ...
- gitlab备份及迁移
Gitlab 创建备份 使用Gitlab一键安装包安装Gitlab非常简单, 同样的备份恢复与迁移也非常简单. 使用一条命令即可创建完整的Gitlab备份: gitlab-rake gitlab:ba ...
- Python简单练习
#coding=UTF-8 a=10; b=2; c=a+b; print (c); score=90; if score>=80: print ("很好"); elif s ...