浮点数在内存中的存储(简述)

原创 2016年05月30日 13:34:44

数据类型:

1.基本类型(整形,浮点型,字符型)

2.构造类型(数组,结构体,联合,枚举)

3.指针类型

查看数据范围:整形范围(limits.h) 浮点型类型(flaot.h)

eg:有符号的char的表示范围:0000 0000~1111 1111(-128~127)其中最高位表示符号位,0为正 1为负

spacer.gif

其实数据的存储和访问就下像作图这个圈一样,当你给它的127+1它就会变成128

整形变量:

一般来说字长为32的情况下,整形表示32位,短整形16位,长整形32位

数据在计算机中以补码的形式存储

正数的原反补码均相同,负数的补码是它的反码+1得到

浮点数:

整数的存储我们都十分的熟悉,但浮点数在我们的计算机里是怎么存储的呢?

我们试着来实现以下程序:

int main()
{
     int num=9;
      float *p=(float *)#
     printf("%d",num);
     printf("%f",*p);
}

wKioL1ZN41SiM4HpAAAkHpNDtuA498.png



int main()
{
     int num;
      float *p=(float *)#
     *p=9.0;
     printf("%d",num);
     printf("%f",*p);
}

wKioL1ZN41Tz_eF8AAAhq5lfv5c867.png

为什么会出现这样的现象呢?

这很正常,因为浮点数在内存中的存储方式和我们的整形变量是完全不一样的

那么浮点数是怎么存放的呢

一般来说我们使用科学计数法将10进制浮点数表示成N.XXXX*10^M;

而浮点数在计算机里存放时,我们的计算机也将它表示成(-1)*S*M*2^E     

其中S表示符号位,M表示尾数,E表示指数

在字长32的计算机中

最高位存放符号位,中间8位存放指数部分,剩下的部分存放尾数。

我们来看看9.0在内存中是怎么存放的!

0100 0001  0001 0000 0000 0000 0000 0000

我们现在以浮点数的存储方式将它分开来看

0 10000010 001 00000000 00000000 00000000

第一位表示符号位 中间八位是阶码 最后紧跟存尾数

9.0在计算机里先表示为1001 以IEEE754标准表示成1.001*2^(3)

在我们存入内存时必须给我们的E加上中间数来调整,对于8位的E我们加上127来调整

所以中间部分表示为1000 0010 (3+127)

现在你会了吗?


版权声明:本文为博主原创文章,未经博主允许不得转载。

浮点数在内存中的存储方式

浮点数类型包括float、double、long double 在这里以float为例。 先看一段代码: #include #include int main() { int a = 9; ...
  • D_leo
  • D_leo
  • 2016年11月05日 17:53
  • 1717

C++中浮点数在内存中的表示

复制了两篇文章的内容: http://blog.csdn.net/nethibernate/article/details/6120382 http://www.cnblogs.com/dol...
  • u012501459
  • u012501459
  • 2015年03月11日 17:04
  • 1169

浮点数在计算机中存储方式

转载自http://www.cnblogs.com/jillzhang/archive/2007/06/24/793901.html C语言和C#语言中,对于浮点类型的数据采用单精度类型(floa...
  • xxssyyyyssxx
  • xxssyyyyssxx
  • 2016年06月05日 00:17
  • 4020

浮点数在计算机内存中是如何存储的?

对于一个整数,我们可以很方便的在十进制与二进制中转换,但是对于一个浮点数来说不是这么容易——因为小数点的存在。对于浮点数来说,小数点的位置不是固定的(小数点后面的数的个数不定),所以如何存储小数点是一...
  • x413743244
  • x413743244
  • 2013年12月04日 18:16
  • 3041

浮点数在计算机内存中的存储格式

对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,float数据占用 32bit,double数据占用 64bit,我们在声明一个变量float f = 2.25f...
  • merlinda_2016
  • merlinda_2016
  • 2018年01月03日 15:46
  • 12

浮点数在计算机内存中的存储格式

浮点数在计算机内存中的存储格式 对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,float数据占用32bit,double数据占用 64bit,我们在声明一个变...
  • todayq
  • todayq
  • 2011年08月18日 16:19
  • 671

C语言中浮点数在内存中的存储格式

首先给出查阅资料的一些链接: 首先来看两个例子: #include #include union stu { int i; char c; float f; }a...
  • yushanjin0767
  • yushanjin0767
  • 2013年12月26日 13:45
  • 673

整数,浮点数在内存中的存储

整数浮点数在内存中的存储
  • zjx624bjh
  • zjx624bjh
  • 2017年07月26日 12:34
  • 97

剖析整数,浮点数在内存中的存储

剖析整数、浮点数在内存中的存储
  • aidoudoua
  • aidoudoua
  • 2017年11月06日 00:36
  • 42

python实现double型浮点数在内存中的存储样式转换接口

话不多说 ,直接上代码 import decimal def convertDouble2Bin(double):       """      function:将十进制双精...
  • windkismet
  • windkismet
  • 2012年11月27日 12:30
  • 792
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:浮点数在内存中的存储(简述)
举报原因:
原因补充:

(最多只允许输入30个字)