IEEE754 笔记
来源:互联网 发布:链家端口费是什么意思 编辑:程序博客网 时间:2024/06/05 01:32
IEEE754 标准是 IEEE 对浮点数表示的规范,目的在于统一浮点数的编码,提高浮点运算程序的可移植性。
IEEE754有3种浮点数格式:单精度、双精度、扩展双精度。
每种格式皆由3部分组成: 符号位(s)、指数(e)和尾数(m)。
single-precision : | 31 | 30:23 | 22:0 | (Ns=1, Ne=8, Nm=23)
double-precision: | 63 | 62:52 | 51:0 | (Ns=1, Ne=11, Nm=52)
double-extended: | 79 | 78:64 | 63:0 | (以x86之80位为例)
所表示值按指数域分为归一化值和未归一化值。
A. 归一化值
当 e != 0 && e != ~0 (全0与全1)所表示值为归一化值
V = (-1)^s * 2^E * (M+1)
其中 E = e - Bias, Bias = 2^(Ne-1)-1
如单精度浮点数 Bias = 127, V = (-1)^s * 2^(e-127) * (M+1)
B. 未归一化值
当 e == 0 || e == ~0 时,所表示值为未归一化值
B.1 e == 0
m == 0, s == 0 ---> +0.0
m == 0, s == 1 ---> -0.0
m != 0 则V = (-1)^s * 2^E * M,其中E = 1 - Bias, Bias = 2^(Ne-1)-1
如单精度浮点数的话,e==0, m!=0, 则 E = 1-127 = -126
B.2 e == ~0
m == 0, s == 0 ---> +INFINITY
m == 0, s == 1 ---> -INFINITY
如果 m != 0 ----> NaN, Not a Number
例1 二进制单精度浮点数转十进制数
0x80480000
1000 0000 0100 1000 0000 0000 0000 0000
1 00000000 10010000000000000000000
s = 1
e = 0, E = 1 - 127 = -126
因e == 0,则:尾数部分M为(无须加1):
0.10010000000000000000000=0.5625
该浮点数的十进制为:
(-1)^1 * 2^(-126) * 0.5625 = -6.612156e-39
可以使用如下 C 程序验证之:
#include <stdio.h>
union FI
{
float f;
struct
{
unsigned char b0;
unsigned char b1;
unsigned char b2;
unsigned char b3;
};
}u;
int main()
{
u.b3 = 0x80;
u.b2 = 0x48;
u.b1 = 0x00;
u.b0 = 0x00;
printf ("x = %e ", u.f);
return 0;
}
union FI
{
float f;
struct
{
unsigned char b0;
unsigned char b1;
unsigned char b2;
unsigned char b3;
};
}u;
int main()
{
u.b3 = 0x80;
u.b2 = 0x48;
u.b1 = 0x00;
u.b0 = 0x00;
printf ("x = %e ", u.f);
return 0;
}
更简洁的:
#include <stdio.h>
int main()
{
int x = 0x80480000;
float y = *(float *)&x;
printf ("x = %e ", y);
return 0;
}
int main()
{
int x = 0x80480000;
float y = *(float *)&x;
printf ("x = %e ", y);
return 0;
}
- IEEE754 笔记
- IEEE754
- IEEE754
- 阅读IEEE754关于浮点运算笔记
- IEEE754标准
- IEEE754标准
- IEEE754标准
- IEEE754标准
- IEEE754标准
- IEEE754 转换
- IEEE754 浮点数表示
- IEEE754换算方法
- 浮点数与IEEE754
- IEEE754浮点数转换
- IEEE754 C 语言代码
- IEEE754浮点数转换
- IEEE754 详点
- 关于IEEE754浮点数阶码
- 第1章 设计模式概述
- ubuntu写ntfs
- 简繁体转换
- mysql优化
- ReportView导出PDF报PInvokeStackImbalance错误
- IEEE754 笔记
- SharePoint 强大的命令行管理功能
- 利用weblogic的数据源作为hibernate的数据源的例子
- The order SQL server estimate sql sentence.
- cgic: CGI的C函数库
- FCKeditor2.4 JSP版使用[转]
- 漫谈ASP.NET设计中的性能优化问题
- PB中嵌入了个C编译器
- 在IE浏览器中使用.NET Windows窗体控件