【Windows程式設計】如何判斷作業系統是64位還是32位
我為我基礎知識掌握的薄弱,感到深深的“折服”。感覺從知識體系的掌握上就有問題!!需要探索性的改進自身的知識架構。加油吧……
一,不同位數作業系統下型別簡介
型別 | 32位作業系統(位元組) | 64位作業系統(位元組) |
char | 1 | 1 |
short | 2 | 2 |
int | 4 | 4 |
long | 4 | 8 |
long long | 8 | 8 |
float | 4 | 4 |
double | 8 | 8 |
long double | 8 | 8 |
wchar_t | 2 | 2 |
bool | 2 | 1 |
各種型別指標 | 4 | 8 |
總結:指標和long是需要注意的地方,long型別的位數總是和機器的指標位數相等。
從32位系統過渡到64位系統不同於從16位系統過渡到32位系統,因為DOS系統下int只有2個位元組,而Windows系統下int是4個位元組,過渡到64位系統後int的位元組數沒有增加。如果使用 Windows系統程式設計,支援64位需要Visual Studio 2005/2008均可,而早期版本是不支援64位平臺的。
二,程式設計判斷方法
方法一:windows程式設計API
#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(); }
方法二:綜合判斷
CPU判斷:
1)安裝cpu-z判斷cpu系統位數
在2005年的時候,CPU有分32位和64位之說,也就是CPU位數從32位向64位的轉變,而現在CPU基本上都是64位啦。所以如果有朋友電腦是早期買的話,可以用Cpu-Z查查自己的CPU到底是多少位數的。
2)判斷技巧:
INTEL 的應該是EM64T; AMD 的應該是X86.
有了這個指令集就說明你的CPU是64位的處理器
3)判斷:執行Cpu-Z最新版本,只需查詢CPU的“指令集”裡是否有“EM64T”或者 “X86”這個指令,有就代表為64位,無則是32位。
方法三:關鍵是選擇編譯平臺為64位的編譯器
個人建議使用visual studio 2010,64位開發平臺設定步驟:
專案屬性 --> 平臺 --->配置管理器 --> 選擇 x64
#include <iostream>
using namespace std;
int main()
{
int *a=NULL;
cout<<sizeof(a)<<endl;
getchar();
}
輸出long 整形的大小也行