【转】浮点格式IEEE754详解
原文网址:http://www.cnblogs.com/zjujunge/archive/2012/09/13/2682613.html
Intel聘请了最好的数值分析家来为8087FPU设计浮点数格式,他们设计的KCS浮点数标准的工作是如此出色,因此IEEE将这种格式作为IEEE浮点数格式的基础。
为了满足广泛的性能与精度需求,intel实际实现三种浮点格式:单精度、双精度以及扩展精度,本文以前两种讲解。
- 单精度浮点格式
单精度使用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详解的更多相关文章
- [转帖]IP /TCP协议及握手过程和数据包格式中级详解
IP /TCP协议及握手过程和数据包格式中级详解 https://www.toutiao.com/a6665292902458982926/ 写的挺好的 其实 一直没闹明白 网络好 广播地址 还有 网 ...
- 基于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 ...
- C 语言 printf格式控制详解
闲来无事,整理了一下C语言printf() 的格式控制语句. PS:详细来源于网络. printf的格式控制的完整格式: % - 0 m.n l或h 格式字符 下面对组成格式说明的各项加以说 ...
- 【PNG格式中文详解】
技术文档(Document) PNG格式 PNG是20世纪90年代中期开始开发的图像文件存储格式,其目的是企图替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性.流式网 ...
- printf格式控制详解
format 参数输出的格式,定义格式为 %[flags][width][.precision][length]specifier specifier在最后面.定义了数据类型. Where the s ...
- js正则表达式 URL格式匹配详解
0.URL格式 protocol :// hostname[:port] / path / [;parameters][?query]#fragment [;parameters]没见过 这里就不做相 ...
- Nginx日志格式log_format详解
PS:Nginx日志相关指令主要有两条,一条是log_format,用来设置日志格式,另外一条是access_log,用来指定日志文件的存放路径.类型.缓存大小等,一般放在Nginx的默认主配置文件/ ...
- Open Flash Chart图表的JSON格式基本属性详解
http://blog.csdn.net/wangwenhui11/article/details/4283571 数据文件必须是JSON格式.JSON对象的基本格式: {} 把所有对象都编写在{}里 ...
- 【转】TCP报文格式定义详解
TCP报文是TCP层传输的数据单元,也叫报文段. 1.端口号:用来标识同一台计算机的不同的应用进程. 1)源端口:源端口和IP地址的作用是标识报文的返回地址. 2)目的端口:端口指明接收方计算机上的应 ...
随机推荐
- HTML5新特性之Canvas+drag(拖拽图像实现图像反转)
1.什么是canvas 在网页上使用canvas元素时,会创建一块矩形区域,默认矩形区域宽度300px,高度150px.. 页面中加入canvas元素后,可以通过javascript自由控制.可以在其 ...
- [PWA] 12. Intro to IndexedDB
Use the library indexedDB-promised. Create a database and stroe: import idb from 'idb'; // Open(db_n ...
- C++ XML 解释库
rapidxml http://rapidxml.sourceforge.net/index.htm
- iOS仿喜马拉雅FM做的毕业设计及总结(含新手福利源码)
其实仿喜马拉雅FM很早就开始了,从我刚接触iOS开始,就开始仿做了一部分,眼尖的人都从我的github找到了那个项目.随着找到实习iOS工作,仿写就落下了,但唯一的收获就是给过去打了一个响亮的耳光,因 ...
- Hibernate分页
1. HQL分页: Session session = HibernateUtil.getInstance().getSession(); Query query = session.createQu ...
- try{...} catch {...} finally{...} 各种情况代码的执行情况
try { int i = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("in the 'try'"); } ca ...
- redisbook笔记——redis内存映射数据结构
虽然内部数据结构非常强大,但是创建一系列完整的数据结构本身也是一件相当耗费内存的工作,当一个对象包含的元素数量并不多,或者元素本身的体积并不大时,使用代价高昂的内部数据结构并不是最好的办法. 为了解决 ...
- JetBrains公司的IDE使用技巧
1.自定义Live Templates: 点击+添加自己的.最后记住要点击,change或default来设置在哪些文件上使用代码片段.
- 简单总结焦点事件、Event事件对象、冒泡事件
每学习一些新的东西,要学会复习,总结和记录. 今天来简单总结一下学到的几个事件:焦点事件.Event事件对象.冒泡事件 其实这几个事件应该往深的说是挺难的,但今天主要是以一个小菜的角度去尝试理解一些基 ...
- 【USACO 1.1.1】你的飞碟在这儿
[问题描述] 一个众所周知的事实,在每一慧星后面是一个不明飞行物UFO. 这些不明飞行物时常来收集来自在地球上忠诚的支持者. 不幸地,他们的空间在每次旅行只能带上一群支持者. 他们要做的是用一种聪明的 ...