浮点数在内部存款和储蓄器中存放的方法采取了

  朋友在谈三个物流相关的种类,是原先项目标三个延续,涉及到后台的恢弘,手提式有线电话机端的App,外加多少个App的连接的蓝牙5.0打字与印刷机。这些体系前后说了三个多月了啊,近日才草拟了斟酌。项目本来不复杂,可是顾客却如此的拖延。笔者觉着客商专门的学存候慢,而朋友认为是同心协力的正是同心协力的,不是和煦的急也不曾用。不断的打电话询问客商,恐怕最后还被压价,反而更不可能做了。他骨子里比自个儿还急,不过人家的心理好。的确不论什么事急不得。

 

浮点数

  在 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 程序来验证方面包车型客车转移,代码如下:

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     float f = 3.75f;
 6 
 7     printf("%f rn", f);
 8 
 9     return 0;
10 }

  以上代码用 VS 二零一三 编写翻译,调节和测量检验运维查看内存,如下图所示。

图片 1

  图中的00 00 70 40是以小尾格局存款和储蓄的,其值为40 70 00
00,与大家手动转变的值相符。

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website