最近有朋友问我如何判断操作系统是32位还是64位的,我当时没反应过来该怎么判断(当然肯定不是直接看电脑属性的那种判断),下面查询了很多资料,发现很多人都是利用这段代码类似的方法来判断的:
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
SYSTEM_INFO si;
GetNativeSystemInfo(&si);
if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 ||
si.wProcessorArchitecture != PROCESSOR_ARCHITECTURE_IA64 )
{
//64 位操作系统
cout<<64<<endl;
}
else {
// 32 位操作系统
cout<<32<<endl;
}
getchar();
}
但是说实话我真的搞不懂中间哪些代码是干嘛的?但这个的确是一个方法。
大家看看我下面的总结的这套方法,不知道能不能帮助到大家,里面也有我看别人的一些资料,希望大家参考下:
首先我们得了解到64位操作系统和32位的区别:
一、64位操作系统只能安装在64位电脑上(CPU必须是64位的)。同时需要安装64位常用软件以发挥64位(x64)的最佳性能。32位操作系统则可以安装在32位(32位CPU)或64位(64位CPU)电脑上。当然,32位操作系统安装在64位电脑上,其硬件恰似“大牛拉小车”:64位效能就会大打折扣。
二、64位CPUGPRs(General-PurposeRegisters,通用寄存器)的数据宽度为64位,64位指令集可以运行64位数据指令,也就是说
处理器一次可提取64位数据(只要两个指令,一次提取8个字节的数据),比32位(需要四个指令,一次提取4个字节的数据)提高了一倍,理论上性能会相应提升1倍。
三、32位64位操作系统基本数据类型字节大小不同,比如:
32位操作系统 64位操作系统
char :1个字节 char :1个字节
*(指针变量): 4个字节 *(指针变量): 8个字节
int: 4个字节 int: 4个字节
float: 4个字节 float: 4个字节
double: 8个字节 double: 8个字节
long: 4个字节 long: 8个字节
long long: 8个字节 long long: 8个字节
我们会发现最主要的差别是指针变量的大小不一样,其次就是long的字节大小不一样,我们可以通过计算指针类型的大小来计算是哪个操作系统即可。