C++数据类型:整型(整数类型)
在C++中,整型(整数类型)有以下几种:
1. int(有符号整数类型)
这是最常用的整型类型。在大多数32位系统中,int类型通常占用4个字节(32位),它可以表示的范围是:-2147483648到2147483647(即-2^{31}到2^{31}-1)。例如:
int num = 10;
2. short(有符号短整数类型)
通常占用2个字节(16位),表示的范围相对较小,是-32768到32767(即-2^{15}到2^{15}-1)。例如:
short shortNum = -5;
3. long(有符号长整数类型)
在32位系统中,long通常占用4个字节,与int相同;但在64位系统中,long可能占用8个字节(64位),表示的范围更大。例如:
long longValue = 100000L;
这里的L后缀用于明确表示这是一个long类型的常量,虽然在某些情况下可以省略,但在数值可能存在歧义时建议加上。
4. long long(有符号长长整数类型,C++11引入)
明确占用8个字节(64位),能表示的范围是-9223372036854775808到9223372036854775807(即-2^{63}到2^{63}-1)。例如:
long long bigNum = 1234567890123456789LL;
这里的LL后缀用于明确表示这是一个long long类型的常量。
5. unsigned int(无符号整数类型)
与int类型占用相同的字节数,但由于是无符号的,它表示的范围是0到4294967295(即0到2^{32}-1)。例如:
unsigned int unsignedNum = 500U;
这里的U后缀表示这是一个无符号整数常量。
6. unsigned short(无符号短整数类型)
占用2个字节,范围是0到65535(即0到2^{16}-1)。例如:
unsigned short unsignedShortNum = 1000u;
这里的u后缀表示无符号短整数常量。
7. unsigned long(无符号长整数类型)
在32位系统中占用4个字节,在64位系统中可能占用8个字节,无符号表示的范围相应变化。例如:
unsigned long unsignedLongNum = 50000UL;
这里的UL后缀表示无符号长整数常量。
8. unsigned long long(无符号长长整数类型,C++11引入)
占用8个字节,范围是0到18446744073709551615(即0到2^{64}-1)。例如:
unsigned long long unsignedBigNum = 1234567890123456789ULL;
这里的ULL后缀表示无符号长长整数常量。
这些整型类型可以满足不同的数值范围需求,在编程时需要根据具体情况选择合适的整型类型。
整型数据以二进制补码形式存储:
正数的存储:正数的补码就是其原码本身。例如,整数5的二进制原码是00000000000000000000000000000101(这里假设是 32 位系统,实际上根据不同的整型类型,占用的位数会有所不同),那么在内存中存储的就是这个二进制形式。
负数的存储:负数的补码是其绝对值的原码按位取反,然后最低位加 1。比如,-5的绝对值5的原码是00000000000000000000000000000101,按位取反后得到11111111111111111111111111111010,再加 1 就变成11111111111111111111111111111011,这就是-5在内存中的存储形式。