数据类型对应的字节数

1、32位和64位CPU

CPU一次处理数据的能力都是2的倍数,所以有8位、16位、32位、64位CPU。

(1) 64位CPU拥有更大的寻址能力,最大支持到16GB内存,而32位CPU只支持4G内存。
(2) 64位CPU一次可提取64位数据,比32位提高了一倍,理论上性能会提升1倍。

2、程序运行平台

平台是由 CPU+OS+Compiler 构成,因为:

  1. 64位CPU上可以运行32位OS。例如,x64 CPU上运行Windows XP。
  2. 32位OS上可以有16/32位编译器。例如,Windows XP上TC是16位,其它常见编译器是32位。
  3. 32位编译器也可以弄出64位整数,例如 int64。

三者的长度可以不一样,但需要相互配合(长度相等)才能发挥最大能量。
例如,64位CPU要想发挥最大性能,需要使用64位操作系统和64位软件。

最大支持内存和操作系统有直接关系。
64位CPU使用32位操作系统,支持的内存也最多为2的32次方,即4G。
64位操作系统的寻址能力是2的64次方,这是理论值,实际不可能用到这么大的内存,目前Windows 64位系统最大只支持128G,而当前主流主板只能支持16G。

3、数据类型对应的字节数

理论上说,数据类型的字节数应该是由CPU决定的,但实际上,主要由编译器决定,占多少位由编译器在编译期间决定。不同的平台上对不同数据类型分配的字节数是不同的。

下表列出了各种数据类型对应的字节数,可用sizeof()得出,例如 sizeof(char), sizeof(char*) 。

数据类型 32位编译器 64位编译器
char * 4 8
char 1 1
short 2 2
int 4 4
long 4 8
long long 8 8
float 4 4
double 8 8

猜你喜欢

转载自blog.csdn.net/ddk3001/article/details/80693020
今日推荐