数据在内存中如何存储

数据在内存中如何存储,第1张

目录

一、C语言中的数据类型及数据类型大小

二、数据类型的归类

 三、整型如何在内存中存储

四、浮点型如何在内存中存储 

一、C语言中的数据类型及数据类型大小

C语言分为以下几种数据类型:

字符型:char;1个字节

短整型:short ;2个字节

整型:int;4个字节

长整型:long;4个字节

更长的整型:long long;8个字节

单精度浮点型:float;4个字节

双精度浮点型:double;8个字节

数据类型的意义:数据类型决定了内存空间的大小,而大小决定了使用范围(1byte=8bit;1kb=1024byte;1mb=1024kb;1gb=1024mb;1tb=1024gb;1pb=1204tb;)

二、数据类型的归类

 

 三、整型如何在内存中存储

3.1原码、反码、补码

整型有3种二进制表示方法:原码、反码、补码。数据在内存中存放给的是补码,因为使用补码可以将符号位和数值域统一处理;同时原码和补码的运算过程是相同的,可以得到同样的结果而不需要额外的硬件电路。

 正数的原码、反码、补码均相同

负数的原码、反码、补码各不相同

负数的原码:直接将负数翻译成二进制就可以得到原码

负数的反码:原码符号位不变。其它位按位取反即可得反码

负数的补码:反码+1=补码

3.2大/小端存储模式

大端存储模式:数据的位保存在内存的地址中,而数据的高位保存在内存的低地址中。

小端存储模式:数据的位保存在内存的地址中,而数据的高位保存在内存的高地址中。

四、浮点型如何在内存中存储 

浮点家族包括float、double、long double

根据IEEE754国际标准规定,任意一个二进制浮点数可表示为(-1)^S*M*2^E。

eg:7.0的二进制是111.0,可以写成1.11X2^2,根据IEEE754国际标准,可写成(-1)^0*1.11*2^2

对于32位浮点数,最高位是符号位S(占1bit),后面是指数E(占8bit),最后面是M(占23bit)

对于64位浮点数,最高位是符号位S(占1bit),后面是指数E(占11bit),最后面是M(占52bit)

 

 

(-1)^S:表示符号位,S=0,浮点数为正数;S=1,浮点数为负数。

M:表示有效数字,1<=M<2。由于M=1.xxxxxxx,存储时默认只保存小数部分xxxxxxx,等到读取时再加1。

2^E:指数位,E是无符号整数(unsigned int)。E为8位,取值范围为0-255;E为11位,取值范围为0-2047。

E不全为0或不全为1:IEEE754规定,对于8位E,需要E+127后再存入内存;对于11位E,需要E+1023后再存入内存。

E全为0:此时浮点数的指数E=1-127=-126,;M不再+1,而是直接表示0.xxxxx的小数。这时浮点数是无限接近0的小数,可以表示为+/-0。

E全为1:这时浮点数为+/-无穷大。

以上内容为学习总结,如果错漏,还请多多包涵斧正。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1325465.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-12
下一篇2022-06-12

发表评论

登录后才能评论

评论列表(0条)

    保存