原文网址: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. HDU--2040

    亲和数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

  2. LVS图解 ---阿里

    LVS在大规模网络环境中的应用   1. SLB总体架构   LVS本身是开源的,我们对它进行了多方面的改进,并且也已开源-https://github.com/alibaba/LVS.     接下 ...

  3. linux 下各errno的意义

    strerror(errno):获取errno对应的错误 #include <string.h> /* for strerror */ #include <errno.h> # ...

  4. 案例:计算1!+2!+3!+......+n!

    /* * 1!+2!+3!+......+n! * */ import java.util.Scanner; public class ForTest{ public static void main ...

  5. SPOJ 181 - Scuba diver 二维背包

    潜水员要潜水,给出n个气缸(1<=n<=1000),每个气缸中有氧气量为ti,氮气量为ai,气缸重量为wi(1<=ti<=21,1<=ai<=79,1<=wi ...

  6. PLSQL远程连接到Oracle服务器

    这里只介绍一种远程连接服务器方法,即本机安装了Oracle客户端和PLSql工具,服务器安装在虚拟机或者另一台电脑上 1.打开Oracle客户端的Net Manager,选择Oracle Net配置— ...

  7. eclipse慢 优化(转)

    1.打开 eclipse.ini -showsplash com.genuitec.myeclipse.product --launcher.XXMaxPermSize 256M -vmargs -D ...

  8. Linux系统中,main函数的执行过程

    http://blog.csdn.net/rrerre/article/details/6728431

  9. [转]JS继承的5种实现方式

    参考链接: http://yahaitt.iteye.com/blog/250338 虽说书上都讲过继承的方式方法,但这些东西每看一遍都多少有点新收获,所以单独拿出来放着. 1. 对象冒充 funct ...

  10. HTML&CSS基础学习笔记1.32-选择器是什么

    选择器是什么 选择器是CSS样式为了定位页面上的任意元素的一种方法. 选择器主要分为:元素标签选择器.通用选择器.类选择器.ID选择器.属性选择器.组合选择器.伪类选择器.伪元素选择器. 先做个了解, ...