1. 程式人生 > >【Windows程式設計】如何判斷作業系統是64位還是32位

【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 整形的大小也行