C语言:基础数据类型在内存中的存储方式

不同的数据类型在内存中所占据的内存空间不同,如整形一般占4个字节,长整型一般占8位。一旦创建一个特定类型的变量,系统就会在内存中分配相应字节数的空间。同时,在打印某一类型的变量时,如果占位符类型与数据类型不匹配,就会发生数据截断。

目录

1. 整型

2. 浮点型

3. 字符型

5. 指针类型


1. 整型:

  • 有符号整型:在内存中通常以补码的形式存储
  • 无符号整型:以补码形式存储,所有位均用来表示数值,不存在符号位,因此所能表示的大小                             范围比有符号整形大。

正整数的原、反、补码都相同。

负整数的三种表示方法各不相同。

原码:直接将数值按照正负数的形式翻译成二进制得到的就是原码。

反码:将原码的符号位不变,其他位依次按位取反就可以得到反码。

补码:反码+1就得到补码。

2. 浮点型:

  •    - 单精度浮点型(float):根据 IEEE 754 标准(该标准的全称为IEEE二进制浮点数算术标准),通常占用 32 位(4字节),包括符号位(S)、阶码(E)和尾数(M)部分。

其与浮点数真实值的对应关系为:(M(mantissa,表尾数)即上图fraction)

(由于默认M的整数位为1,因此在存储时舍去整数位,只存储小数位,从而获得更大的精度。因此,M的真实值为尾数部分所表示的小数加1)

  • - 双精度浮点型(double):同样遵循 IEEE 754 标准,通常占用 64 位(8字节),具有更高的精度和更大的表示范围。

需要注意的是:即便双精度浮点数用于存储尾数的位更多,精度更高,但因为二进制转换的原因,它也无法完全精确地表示任何浮点数。

3. 字符型(char):

   - 通常占用1字节。对于英文字符、数字和其他一些基本符号,通常使用ASCII编码。ASCII编码将每个字符映射为一个唯一的7位二进制数(实际存储时通常扩展为8位,即一个字节)。

例如,字符"A"的ASCII值是65(二进制为01000001),在内存中就以这个二进制序列进行存储。

5. 指针类型:

   - 在 C/C++ 中,指针类型存储的是内存地址,其大小通常与系统的指针大小相匹配,例如在32位系统中指针通常占4字节,在64位系统中占8字节。

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值