朋友在谈一个物流相关的项目,是以前项目的一个延续,涉及到后台的扩展,手机端的App,外加两个App的对接的蓝牙打印机。这个项目前后说了一个多月了吧,最近才草拟了协议。项目本来不复杂,但是客户却如此的拖延。我觉得客户做事好慢,而朋友觉得是自己的就是自己的,不是自己的急也没有用。不断的打电话询问客户,可能最后还被压价,反而更没办法做了。他其实比我还急,但是人家的心态好。的确凡事急不得。

浮点数

  在 C 语言中,有两种存储浮点数的方式,分别是 float 和 double ,当然了还有long double。这几种浮点型所容纳的长度不同,当然它们存储的精度也就不同了。

  对于整形而言,比如 int 、short 、char 之类的,在内存中的存储方式都是用 补码 进行表示。而浮点数在内存中并没有使用补码进行表示。浮点数在内存中存储的方式使用了 IEEE 的编码表示方式,即使用 符号指数 和 尾数 的形式进行存储的。

IEEE浮点数表示

  用 IEEE 编码表示浮点数,需要 3 部分进行表示,分别是 符号指数 和 尾数。符号位占用 1 位,0 表示正数,1 表示负数。指数 和 尾数 根据 float 和 double 类型的不同而长度不同。

  

  IEEE 二进制浮点数的表示:

位数  符号位  指数位  尾数位
32     1            8           23     单精度(float)
64     1           11          52     双精度(double)

编码转换

以单精度为例:把3.75用IEEE表示法表示

1、把 10 进制转换为2进制:3.75D=11.11B

2、 尾数正规化                     1.111*2^1

3、 修正指数                         1+127=128 1000 0000

4、 符号 0表示正,1表示负

5、 IEEE表示                         0 1000 0000 1110 0000 0000 0000 0000 000

6、 转换为16进制:              0100 0000 0111 0000 0000 0000 0000 0000   40 70 00 00

用 C 程序进行验证

  写一个简单的 C 程序来验证上面的转换,代码如下:

 #include <stdio.h>

 int main()
{
float f = 3.75f; printf("%f \r\n", f); return ;
}

  以上代码用 VS 2012 编译,调试运行查看内存,如下图所示。

  图中的00 00 70 40是以小尾方式存储的,其值为40 70 00 00,与我们手动转换的值相同。


我的微信公众号:“码农UP2U”

IEEE 二进制浮点数的表示的更多相关文章

  1. IEEE二进制浮点数算术标准(IEEE 754)

    整理自IEEE 754 IEEE二进制浮点数算术标准(IEEE 754)是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用.这个标准定义了表示浮点数的格式(包括负零-0) ...

  2. IEEE二进制浮点数算术标准学习

    看到有网上有个项目是要求将浮点数用二进制表示出来,需要用IEEE754标准,查了查维基和深入理解计算机系统,重新学习了一遍浮点数在计算机中的表示和内存中的存储, 先简单的做个笔记,后面需要更深入的理解 ...

  3. IEEE 754二进制浮点数算术标准

    可能很多人都遇到过浮点数精度丢失的问题,下面以JavaScript为例. 1 - 0.9 = 0.09999999999999998 纳尼,不应该是0.1么,怎么变成0.099999999999999 ...

  4. IEEE 754 浮点数在计算机中的表示方法

    IEEE二进制浮点数算术标准(IEEE 754)是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用.这个标准定义了表示浮点数的格式(包括负零-0)与反常值(denorma ...

  5. 深入理解计算机系统(2.7)---二进制浮点数,IEEE标准(重要)

    2.6我们进行了二进制整数运算的最后一役,本次LZ将和各位一起进入浮点数的世界,这里没有无符号,没有补码,但是有各种各样的惊奇.倘若你真正的进入了浮点数的世界,一定会发现它原来是这么有意思,而不是像之 ...

  6. IEEE 754浮点数表示标准

    二进制数的科学计数法 C++中使用的浮点数包括采用的是IEEE标准下的浮点数表示方法.我们知道在数学中可以将任何十进制的数写成以10为底的科学计数法的形式,如下 其中显而易见,因为如果a比10大或者比 ...

  7. IEEE 754 浮点数加减运算

    电子科技大学 - 计算机组成原理 小数的十进制和二进制转换 移码 定义:[X]移 = X + 2n ( -2n ≤ X < 2n ) X为真值,n为整数的位数 数值位和X的补码相同,符号位与补码 ...

  8. IEEE 754 浮点数的四种舍入方式

    四种舍入方向: 向最接近的可表示的值:当有两个最接近的可表示的值时首选"偶数"值:向负无穷大(向下):向正无穷大(向上)以及向0(截断). 说明:默认模式是最近舍入(Round t ...

  9. [学习笔记]Javascript采用二进制浮点数和四舍五入的错误

    1.样例 var a = .3 - .2 //0.09999999999999998 var b = .2 - .1 //0.1 a == b //false 出现这样的原因在于 1.Javascri ...

随机推荐

  1. json递归查询

    主体: class json_search(): '''递归查询依赖key''' def search_key(self,data,key): self.data = data self.key_va ...

  2. JQuery学习笔记(1)——选择器

    JQuery本质上还是JavaScript,是JavaScript的一个框架,可以让我们更简洁地去使用JavaScript 使用之前,记得在html头部引用JQuery 通过选择器获得JQuery对象 ...

  3. Koa + GraphQL 示例

    初始化项目 创建 graphql-example 文件夹进入后初始化一个 package.json 文件. $ mkdir graphql-example && cd $_ $ yar ...

  4. 2018-8-10-win10-uwp-依赖属性

    原文:2018-8-10-win10-uwp-依赖属性 title author date CreateTime categories win10 uwp 依赖属性 lindexi 2018-08-1 ...

  5. Google_PWA_ServiceWork_渐进式 Web 应用_给应用提供离线体验

    前言:今天结识了google PWA提供的一个对移动端Web应用提供离线体验的一个功能,感觉很有用.我这里不分享自己的写法和代码.官网文档说的很详细,直接粘过来大家看吧. 推荐官网地址:你的第一个渐进 ...

  6. 百度Sitemap生成器

    今天用了两个小时, 为无限影视(https://www.88tv.org)开发了一个小工具, 用来生成baidu的sitemap.  方便用. 因为该电影站的视频内容详情网页的ID是自增长的,所以可以 ...

  7. 禁止页面被复制和禁止右键,一段样式一段JS就行了,无需复杂设定!

    群里小伙伴经常问怎么禁止页面复制和右键,其实这个问题百度一下是很多资料的,我估计小伙伴都懒,所以这里统一回复下: 找到模板里面的</head>,在上面加如下代码就行了 <style ...

  8. TreeMap源码分析,看了都说好

    概述 TreeMap也是Map接口的实现类,它最大的特点是迭代有序,默认是按照key值升序迭代(当然也可以设置成降序).在前面的文章中讲过LinkedHashMap也是迭代有序的,不过是按插入顺序或访 ...

  9. H5常用新特性

    html5新特性 [注意]这些新特性都有兼容性的问题,基本是IE9+以上版本的浏览器才支持,如果不考兼容性问题,可以大量使用这些新特性 html5新增的语义话标签 <header> :头部 ...

  10. fatal error: iconv.h: No such file or directory

    CodeLite CodeLite编译(使用Cygwin Toolchain)出现如下错误: fatal error: iconv.h: No such file or directory 解决办法 ...