原文网址:http://www.cnblogs.com/zjujunge/archive/2012/09/13/2682613.html

Intel聘请了最好的数值分析家来为8087FPU设计浮点数格式,他们设计的KCS浮点数标准的工作是如此出色,因此IEEE将这种格式作为IEEE浮点数格式的基础。

  为了满足广泛的性能与精度需求,intel实际实现三种浮点格式:单精度、双精度以及扩展精度,本文以前两种讲解。

  1. 单精度浮点格式

  单精度使用24位的尾数与8位的阶码,尾数通常表示的值在(1.0,2.0),尾数的最高为总是假定为1,正好是在二进制二进制小数点左边的第一个位,余下的23个尾数位则在小数点右边,代表该数。具体见下图M为尾数位。

   隐含位的存在导致尾数总是大于或等于1,小数点右边的每个位代表一个值(0或1)乘以2一个负幂。尽管从1到2有无限个数,我们能够表示的只有八百万个(223)。

  尾数使用1补码格式二不是2的补码。第31位(S)符号决定正负。

  阶码使用余-127格式简化了浮点数的比较。

  2.双精度浮点

  参照单精度浮点解析以及上图即可明白。

  3.浮点转成二进制显示部分源代码(C#)

  单精度浮点数显示

  

private void fp_Disp(double number)
{
double zhenshu, xiaoshu, jieguo;
string strZ, strX = "", strJ = "";
Int64 numb = 127;
int i = 1, len, le, len2, len3, Bias = 127;
string s = "", str1, str2, Jiema = "", weishu = "", jia;//,ti_Jiema="";
if (number > 0)
{
s = "0";
}
else
{
s = "1";
}
zhenshu = Math.Floor(Math.Abs(number)); //整数部分
numb = Convert.ToInt64(zhenshu);
strZ = Convert.ToString(numb, 2); xiaoshu = Math.Abs(number) - zhenshu;
for (i = 0; ((xiaoshu != 0) && (i < 23)); i++)
{
jieguo = xiaoshu * 2;
strJ = jieguo.ToString();
strX += strJ.Substring(0, 1);
zhenshu = Math.Floor(jieguo);
xiaoshu = jieguo - zhenshu;
}
strJ = strZ + "." + strX;
str1 = strJ.Substring(0, 1);
if (str1.Equals("1"))
{
len = strZ.Length;
le = len + Bias - 1;
Jiema = Convert.ToString(le, 2);
len2 = Jiema.Length;
if (len2 < 8)
{
for (i = 0, jia = ""; i < 8 - len2; i++)
{
jia += "0";
}
Jiema = jia + Jiema;
}
str2 = strZ.Substring(1, len - 1) + strX;
len = str2.Length;
if (len > 23)
{
weishu = str2.Substring(0, 23);
}
else
{
weishu = str2;
}
}
else
{
len = strX.IndexOf("1");
le = Bias - (len + 1);
Jiema = Convert.ToString(le, 2);
len2 = Jiema.Length;
if (len2 < 8)
{
for (i = 0, jia = ""; i < 8 - len2; i++)
{
jia += "0";
}
Jiema = jia + Jiema;
}
len3 = strX.Length;
if (len3 == (len + 1))
{
weishu = "0";
}
else
{
weishu = strX.Substring(len + 1);
}
}
strJ = s + Jiema + weishu;
len = strJ.Length;
if (len < 32)
{
for (i = 0; i < 32 - len; i++)
{
strJ += "0";
}
} fp_sBox.Text = s;
fp_eBox.Text = Jiema;
len = 23 - weishu.Length;
for (i = 0; i < len; i++)
weishu += "0";
fp_mBox.Text = weishu;
byte fe;
fe = Convert.ToByte(Jiema, 2);
fp_eBox1.Text = fe.ToString();
fp_eBox2.Text = (fe - Bias).ToString();
//ti处理
ti_sBox.Text = s;
ti_eBox2.Text = (fe - Bias).ToString();
ti_eBox1.Text = (fe + 1).ToString();
Jiema = Convert.ToString(fe + 1, 2);
len=Jiema.Length;
for (i = 0; i < 8 - len; i++)
{
Jiema = "0" + Jiema;
}
ti_eBox.Text = Jiema;
ti_mBox.Text = weishu;
dti_eBox.Text = Jiema;
}

  4.TI处理器的浮点表示法

  具体见下图

【转】浮点格式IEEE754详解的更多相关文章

  1. [转帖]IP /TCP协议及握手过程和数据包格式中级详解

    IP /TCP协议及握手过程和数据包格式中级详解 https://www.toutiao.com/a6665292902458982926/ 写的挺好的 其实 一直没闹明白 网络好 广播地址 还有 网 ...

  2. 基于C语言的Q格式使用详解

    用过DSP的应该都知道Q格式吧: 目录 1 前言 2 Q数据的表示 2.1 范围和精度 2.2 推导 3 Q数据的运算 3.1 0x7FFF 3.2 0x8000 3.3 加法 3.4 减法 3.5 ...

  3. C 语言 printf格式控制详解

    闲来无事,整理了一下C语言printf() 的格式控制语句. PS:详细来源于网络. printf的格式控制的完整格式: %  -  0  m.n  l或h  格式字符 下面对组成格式说明的各项加以说 ...

  4. 【PNG格式中文详解】

        技术文档(Document)   PNG格式 PNG是20世纪90年代中期开始开发的图像文件存储格式,其目的是企图替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性.流式网 ...

  5. printf格式控制详解

    format 参数输出的格式,定义格式为 %[flags][width][.precision][length]specifier specifier在最后面.定义了数据类型. Where the s ...

  6. js正则表达式 URL格式匹配详解

    0.URL格式 protocol :// hostname[:port] / path / [;parameters][?query]#fragment [;parameters]没见过 这里就不做相 ...

  7. Nginx日志格式log_format详解

    PS:Nginx日志相关指令主要有两条,一条是log_format,用来设置日志格式,另外一条是access_log,用来指定日志文件的存放路径.类型.缓存大小等,一般放在Nginx的默认主配置文件/ ...

  8. Open Flash Chart图表的JSON格式基本属性详解

    http://blog.csdn.net/wangwenhui11/article/details/4283571 数据文件必须是JSON格式.JSON对象的基本格式: {} 把所有对象都编写在{}里 ...

  9. 【转】TCP报文格式定义详解

    TCP报文是TCP层传输的数据单元,也叫报文段. 1.端口号:用来标识同一台计算机的不同的应用进程. 1)源端口:源端口和IP地址的作用是标识报文的返回地址. 2)目的端口:端口指明接收方计算机上的应 ...

随机推荐

  1. IOS中类的扩展(协议,分类)

    IOS中类的扩展(协议,分类) 扩展类,我们可以使用协议和分类这两种方法,下面我们来分别实现这两种方法: 参考网址:http://www.cnblogs.com/wendingding/p/37095 ...

  2. iOS 开发-单元测试

    前言 维基百科对单元测试的定义如下: 在计算机编程中,单元测试(英语:Unit Testing)又称为模块测试, 是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作.程序单元是应用的最小可 ...

  3. Android(java)学习笔记214:开源框架的文件上传(只能使用Post)

    1.文件上传给服务器,服务器端必然要写代码进行支持,如下: 我们新建一个FileUpload.jsp的动态网页,同时我们上传文件只能使用post方式(不可能将上传数据拼凑在url路径下),上传数据Ap ...

  4. 洛谷 1503 鬼子进村 (set)

    /*set加速维护*/ #include<iostream> #include<cstdio> #include<cstring> #include<set& ...

  5. Struts1 中$ 没有解析的问题

    如果发现你的代码中,${name} 没有解析,就这样显示在页面上,排除错误的情况下 可能是你的jsp缺少一种属性isELIgnored="false" 加上就能够显示了 <% ...

  6. gephi安装好了,为何打不开?

    ref: http://www.zhihu.com/question/21268129?sort=created 这个软件我自己也没有弄过,不过我同学要不会装,所以我测试地帮她装,得益于这个哥们的发的 ...

  7. 3.AOP入门1

    1.定义1.1基本概念2. 1.定义 1.1基本概念 AOP:aspect object programing面向切面编程 aop编程的要点在于关注点和切入点 关注点:指的是代码中的重复部分,每次实现 ...

  8. C++ Built-In Array 的语义

    C++ 编译花了大量精力使得class和原始类(primitive types)的用法一致.比如array的应用: A a[100]:// A is class int b[100]: 虽然a是用户定 ...

  9. Linux CentOS6.4下Mysql数据库的安装与配置

    一.mysql简介 说到数据库,我们大多想到的是关系型数据库,比如mysql.oracle.sqlserver等等,这些数据库软件在windows上安装都非常的方便,在Linux上如果要安装数据库,咱 ...

  10. 『重构--改善既有代码的设计』读书笔记----Inline Method

    加入间接层确实是可以带来便利,但过多的间接层有时候会让我自己都觉得有点恐怖,有些时候,语句本身已经够清晰的同时就没必要再嵌一个函数来调用了,这样只会适得其反.比如 void test() { if ( ...