32位系统和64位有什么区别?
通常的64位技术是相对32位而言的,这个位数指的是CPU GPRs(General-Purpose register通用寄存器)的数据宽度为64位,而32位的处理器的通用寄存器的数据宽度为32位,64位指令集就是运行64位数据的指令,也就是说一次可以运行64bit的数据。
也就是说:
64位CPU拥有更大的寻址能力,最大支持到16GB内存,而32bit只支持4G内存;
64位CPU一次可提取64位数据,比32位提高了一倍,理论上性能会提升1倍。但这是建立在64bit操作系统和64bit软件的基础之上。
综上,虽然理论上来讲,数据类型的字节数应该是由CPU决定的,但实际上主要由编译器决定,编译器会根据系统平台自己改变数据类型的取值范围。
常用数据类型对应字节数
类型 32位编译器 64位编译器
char 1个字节 1个字节
char* 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节 8个字节(同理64位编译器)
short int 2个字节 2个字节
int 4个字节 4个字节
unsigned int 4个字节 4个字节
float 4个字节 4个字节
double 8个字节 8个字节
long 4个字节 8个字节
long long 8个字节 8个字节
unsigned long 4个字节 8个字节