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 ...
随机推荐
- C# 在執行程式目錄下產生文件夾
//產生一個Log文件夾string appPath = Application.StartupPath; if (!Directory.Exists(appPath + "/log&quo ...
- SharePoint 2013 状态机工作流之日常报销示例
简单介绍下状态机工作流,状态机工作流提供了一系列的状态.工作流从初始状态开始,到终止状态结束.两个状态之间定义行为进行过渡.通常情况下,状态机工作流对事件作出反应,事件的发生将会使状态发生改变. 1. ...
- Linux-HA实战(1)— Heartbeat安装
接触Heartbeat主要是因为之前项目中使用了TFS,最近想给nameserver做HA,因为TFS官方用的Heartbeat,所以刚好了解下,参考了网络上很多内容,这里简单记录下. 内容 环境和软 ...
- ListView实现点击事件以及总结
差点吓死我了,好不容易写的博客没有了,还好有自动保存功能,不然我真的是呜呜... ---恢复内容开始--- 开学一个月了,终于可以看见自己的作品雏形了. 从一个小白到现在半年了,觉得日子过得比较充实, ...
- ThingkPHP对数据库进行改操作
public function test_check(){ $Experiment = M("Experiment");//实例化Experiment对象.这个对象是跟数据库的表对 ...
- 【转载】ReactiveX 的理念和特点
原作者地址:http://www.open-open.com/lib/view/open1440166491833.html ReactiveX是Reactive Extensions的缩写,一般简写 ...
- ViewController生命周期
alloc -> initWithNibName -> loadView -> viewDidLoad -> viewWillAppear -> viewDidAppea ...
- String类型传值以及对象传值
package Virtual; class Stan{ String mm = "hello"; } class Virtual { public static void mai ...
- Python之基础
# 需要导入字符编码,否则遇到中文会报错 # coding=utf-8 # 1 定义变量 a = 10 b = 2 c = a+b print(c) # 2 判断语句 score = 90 if sc ...
- ant+findbugs 扫描代码生成报告
1. 下载安装ant.findbugs 下载ant.findbugs最新压缩包解压到本地磁盘合适位置,比如: D:\Program Files\apache-ant-1.9.7 D:\Program ...