原文网址: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#)

  单精度浮点数显示

  

  1. private void fp_Disp(double number)
  2. {
  3. double zhenshu, xiaoshu, jieguo;
  4. string strZ, strX = "", strJ = "";
  5. Int64 numb = 127;
  6. int i = 1, len, le, len2, len3, Bias = 127;
  7. string s = "", str1, str2, Jiema = "", weishu = "", jia;//,ti_Jiema="";
  8. if (number > 0)
  9. {
  10. s = "0";
  11. }
  12. else
  13. {
  14. s = "1";
  15. }
  16. zhenshu = Math.Floor(Math.Abs(number)); //整数部分
  17. numb = Convert.ToInt64(zhenshu);
  18. strZ = Convert.ToString(numb, 2);
  19.  
  20. xiaoshu = Math.Abs(number) - zhenshu;
  21. for (i = 0; ((xiaoshu != 0) && (i < 23)); i++)
  22. {
  23. jieguo = xiaoshu * 2;
  24. strJ = jieguo.ToString();
  25. strX += strJ.Substring(0, 1);
  26. zhenshu = Math.Floor(jieguo);
  27. xiaoshu = jieguo - zhenshu;
  28. }
  29. strJ = strZ + "." + strX;
  30. str1 = strJ.Substring(0, 1);
  31. if (str1.Equals("1"))
  32. {
  33. len = strZ.Length;
  34. le = len + Bias - 1;
  35. Jiema = Convert.ToString(le, 2);
  36. len2 = Jiema.Length;
  37. if (len2 < 8)
  38. {
  39. for (i = 0, jia = ""; i < 8 - len2; i++)
  40. {
  41. jia += "0";
  42. }
  43. Jiema = jia + Jiema;
  44. }
  45. str2 = strZ.Substring(1, len - 1) + strX;
  46. len = str2.Length;
  47. if (len > 23)
  48. {
  49. weishu = str2.Substring(0, 23);
  50. }
  51. else
  52. {
  53. weishu = str2;
  54. }
  55. }
  56. else
  57. {
  58. len = strX.IndexOf("1");
  59. le = Bias - (len + 1);
  60. Jiema = Convert.ToString(le, 2);
  61. len2 = Jiema.Length;
  62. if (len2 < 8)
  63. {
  64. for (i = 0, jia = ""; i < 8 - len2; i++)
  65. {
  66. jia += "0";
  67. }
  68. Jiema = jia + Jiema;
  69. }
  70. len3 = strX.Length;
  71. if (len3 == (len + 1))
  72. {
  73. weishu = "0";
  74. }
  75. else
  76. {
  77. weishu = strX.Substring(len + 1);
  78. }
  79. }
  80. strJ = s + Jiema + weishu;
  81. len = strJ.Length;
  82. if (len < 32)
  83. {
  84. for (i = 0; i < 32 - len; i++)
  85. {
  86. strJ += "0";
  87. }
  88. }
  89.  
  90. fp_sBox.Text = s;
  91. fp_eBox.Text = Jiema;
  92. len = 23 - weishu.Length;
  93. for (i = 0; i < len; i++)
  94. weishu += "0";
  95. fp_mBox.Text = weishu;
  96. byte fe;
  97. fe = Convert.ToByte(Jiema, 2);
  98. fp_eBox1.Text = fe.ToString();
  99. fp_eBox2.Text = (fe - Bias).ToString();
  100. //ti处理
  101. ti_sBox.Text = s;
  102. ti_eBox2.Text = (fe - Bias).ToString();
  103. ti_eBox1.Text = (fe + 1).ToString();
  104. Jiema = Convert.ToString(fe + 1, 2);
  105. len=Jiema.Length;
  106. for (i = 0; i < 8 - len; i++)
  107. {
  108. Jiema = "0" + Jiema;
  109. }
  110. ti_eBox.Text = Jiema;
  111. ti_mBox.Text = weishu;
  112. dti_eBox.Text = Jiema;
  113. }

  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. HTML5新特性之Canvas+drag(拖拽图像实现图像反转)

    1.什么是canvas 在网页上使用canvas元素时,会创建一块矩形区域,默认矩形区域宽度300px,高度150px.. 页面中加入canvas元素后,可以通过javascript自由控制.可以在其 ...

  2. [PWA] 12. Intro to IndexedDB

    Use the library indexedDB-promised. Create a database and stroe: import idb from 'idb'; // Open(db_n ...

  3. C++ XML 解释库

    rapidxml  http://rapidxml.sourceforge.net/index.htm

  4. iOS仿喜马拉雅FM做的毕业设计及总结(含新手福利源码)

    其实仿喜马拉雅FM很早就开始了,从我刚接触iOS开始,就开始仿做了一部分,眼尖的人都从我的github找到了那个项目.随着找到实习iOS工作,仿写就落下了,但唯一的收获就是给过去打了一个响亮的耳光,因 ...

  5. Hibernate分页

    1. HQL分页: Session session = HibernateUtil.getInstance().getSession(); Query query = session.createQu ...

  6. try{...} catch {...} finally{...} 各种情况代码的执行情况

    try { int i = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("in the 'try'"); } ca ...

  7. redisbook笔记——redis内存映射数据结构

    虽然内部数据结构非常强大,但是创建一系列完整的数据结构本身也是一件相当耗费内存的工作,当一个对象包含的元素数量并不多,或者元素本身的体积并不大时,使用代价高昂的内部数据结构并不是最好的办法. 为了解决 ...

  8. JetBrains公司的IDE使用技巧

    1.自定义Live Templates:   点击+添加自己的.最后记住要点击,change或default来设置在哪些文件上使用代码片段.

  9. 简单总结焦点事件、Event事件对象、冒泡事件

    每学习一些新的东西,要学会复习,总结和记录. 今天来简单总结一下学到的几个事件:焦点事件.Event事件对象.冒泡事件 其实这几个事件应该往深的说是挺难的,但今天主要是以一个小菜的角度去尝试理解一些基 ...

  10. 【USACO 1.1.1】你的飞碟在这儿

    [问题描述] 一个众所周知的事实,在每一慧星后面是一个不明飞行物UFO. 这些不明飞行物时常来收集来自在地球上忠诚的支持者. 不幸地,他们的空间在每次旅行只能带上一群支持者. 他们要做的是用一种聪明的 ...