
目录
一、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:这时浮点数为+/-无穷大。
以上内容为学习总结,如果错漏,还请多多包涵斧正。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)