前言
本文主要讲述整型和浮点型在内存中的存储方式
一.整型
整型又分为:
- char: unsigned char, signed char
- short: unsigned short [int], signed short [int]
- int: unsigned int, signed int
- long: unsigned long [int], signed long [int]
1. char
char类型的数据所占内存空间为1个字节,也就是8个二进制位,signed char范围(-128-127)unsigned char (0-255) 。
int main()
{
char a = 'a';
}
这里字符’a’的ASCII码值为97,计算机存储字符时,都是将字符转换成ASCII码值存放在内存中,97的二进制表示为01100001,也就是0x61。
2. int
int类型的数据所占空间为4个字节,也就是32个二进制位。
2.1 原码,反码,补码
在讲int的存储方式之前我们需要了解几个概念,就是计算机中的整数有三种二进制表达方式即原码,反码,补码,计算机内存中存放的是补码,这三种表达方式,都有符号位和数值位两部分,符号位即最高位,'0’表示正数,'1’表示负数。
- 正数:原码,反码,补码均相同。
- 负数:反码为原码按位取反(符号位不变),补码为反码+1
如:
原码:-1=10000000000000000000000000000001
反码:11111111111111111111111111111110
补码:11111111111111111111111111111111=0xffffffff
2.2 大小端
不同的机器采用的存储多字节的方法不一样,有些是大端字节序存储,有些是小端字节序存储。(单字节不存在大小端问题如char)
- 小端字节序存储:低字节放低地址,高字节放高地址
- 大端字节序存储:低字节放高地址,高字节放低地址
int main()
{
int a = 0x11223344;//16进制表示方便观察
}
我的电脑采用的是小端存