2009-05-05 20 views
11

मुझे कैसे पता चलेगा कि मेरा प्रोसेसर 32 बिट या 64 बिट (आपकी पसंद की भाषा में) है या नहीं? मैं इंटेल और एएमडी प्रोसेसर दोनों के लिए यह जानना चाहता हूं।मैं कैसे खोज सकता हूं कि मेरा सीपीयू 32 या 64 बिट्स है या नहीं?

+1

आपको कम से कम उस भाषा को प्रदान करना होगा जिसे आप इस जानकारी को – JaredPar

+2

में ढूंढने की कोशिश कर रहे हैं, यह प्रोग्रामिंग प्रश्न की तरह नहीं दिखता है। –

+2

कोई प्रोग्रामिंग प्रश्न नहीं है। बंद होना चाहिए –

उत्तर

20

विंडोज, C/C++:

#include <windows.h> 

SYSTEM_INFO sysInfo, *lpInfo; 
lpInfo = &sysInfo; 
::GetSystemInfo(lpInfo); 
switch (lpInfo->wProcessorArchitecture) { 
case PROCESSOR_ARCHITECTURE_AMD64: 
case PROCESSOR_ARCHITECTURE_IA64: 
    // 64 bit 
    break; 
case PROCESSOR_ARCHITECTURE_INTEL: 
    // 32 bit 
    break; 
case PROCESSOR_ARCHITECTURE_UNKNOWN: 
default: 
    // something else 
    break; 
} 
+0

क्या आप यह निर्दिष्ट कर सकते हैं कि यह कौन सी भाषा है (हां, * मुझे पता है लेकिन अन्य नहीं हो सकते हैं) और कोई अन्य आवश्यकताएं (उदा।, हेडर फाइलें)? – paxdiablo

+0

या, उस मामले के लिए, क्या ओएस? क्या यह मेरे मैक मिनी, मेरे लिनक्स बॉक्स, और मेरे विंडोज एक्सपी और विस्टा सिस्टम पर काम करेगा? –

+1

बह - संपादित नहीं कर सकता ... लेकिन इसलिए * उस * स्विच को 'डिफ़ॉल्ट:' जोड़ने के लिए ... *-) –

0

मैं सोच रहा था, एक 64-बिट प्रोसेसर पर, संकेत 64-बिट कर रहे हैं। तो, प्रोसेसर सुविधाओं की जांच करने के बजाय, प्रोग्रामरेटिक रूप से 'टेस्ट' करने के लिए पॉइंटर्स का उपयोग करना संभव हो सकता है। यह दो संगत पॉइंटर्स के साथ संरचना बनाने और फिर 'घुमावदार' की जांच के रूप में सरल हो सकता है।

+0

नहीं, 64 बिट सक्षम प्रोसेसर पर 32 बिट कोड चलने में मदद नहीं करेगा। – mghie

8

सी #, ओएस नास्तिक

sizeof(IntPtr) == 4 ? "32-bit" : "64-bit" 

यह कुछ हद तक कच्चे तेल की है लेकिन मूल रूप से आपको बताता है CLR के रूप में 32-बिट या 64-बिट, जो अधिक होने की संभावना आप को पता है की आवश्यकता होगी क्या है चल रहा है या नहीं। उदाहरण के लिए, सीएलआर 64-बिट प्रोसेसर पर 32-बिट के रूप में चलाया जा सकता है।

अधिक जानकारी के लिए यहाँ देखें: How to detect Windows 64-bit platform with .NET?

4

यहाँ मुश्किल सा आप एक 64 बिट सीपीयू लेकिन एक 32 बिट ओएस हो सकता है। यदि आप उस मामले की परवाह करते हैं तो इसे सीपीयू से पूछताछ करने के लिए एएसएम स्टब की आवश्यकता होगी। यदि नहीं, तो आप आसानी से ओएस से पूछ सकते हैं।

1

VBScript, विंडोज:

Const PROCESSOR_ARCHITECTURE_X86 = 0 
Const PROCESSOR_ARCHITECTURE_IA64 = 6 
Const PROCESSOR_ARCHITECTURE_X64 = 9 

strComputer = "." 

Set oWMIService = GetObject("winmgmts:" & _ 
    "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 

Set colProcessors = oWMIService.ExecQuery("SELECT * FROM Win32_Processor") 

For Each oProcessor In colProcessors 
    Select Case oProcessor.Architecture 
    Case PROCESSOR_ARCHITECTURE_X86 
     ' 32-bit 
    Case PROCESSOR_ARCHITECTURE_X64, PROCESSOR_ARCHITECTURE_IA64 
     ' 64-bit 
    Case Else 
     ' other 
    End Select 
Next 

विंडोज स्क्रिप्ट होस्ट, JScript में इस समय और PROCESSOR_ARCHITECTURE वातावरण चर का उपयोग कर के लिए एक अन्य संभावित समाधान:

var oShell = WScript.CreateObject("WScript.Shell"); 
var oEnv = oShell.Environment("System"); 
switch (oEnv("PROCESSOR_ARCHITECTURE").toLowerCase()) 
{ 
    case "x86": 
    // 32-bit 
    case "amd64": 
    // 64-bit 
    default: 
    // other 
} 
2

नेट में आप 64 से 86 अंतर कर सकते हैं IntPtr संरचना की आकार संपत्ति को देखकर। IntPtr.Size संपत्ति बाइट्स में वापस आती है, प्रति बिट 8 बिट्स, इसलिए यह 32-बिट CPU पर 4 के बराबर है और 64-बिट CPU पर 8 है। चूंकि हम 4-बाइट या 8-बाइट प्रोसेसर की बजाय 32-बिट और 64-बिट प्रोसेसर के बारे में बात करते हैं, इसलिए मैं बिट्स में तुलना करना पसंद करता हूं जो इसे और स्पष्ट करता है कि क्या हो रहा है।

सी #

if(IntPtr.Size * 8 == 64) 
{ 
    //x64 code 
} 

PowerShell

if([IntPtr]::Size * 8 -eq 64) 
{ 
    #x64 code 
} 
0

सी # कोड:

int size = Marshal.SizeOf(typeof(IntPtr)); 
if (size == 8) 
{ 
Text = "64 bit"; 
} 
else if (size == 4) 
{ 
Text = "32 bit"; 
} 
1

अजगर में:

In [10]: import platform 
In [11]: platform.architecture() 
Out[11]: ('32bit', 'ELF') 

सामान्य रूप से, बहुत साफ है। लेकिन मुझे पूरा यकीन है कि ये फ़ंक्शंस प्लेटफ़ॉर्म को वापस कर देते हैं जहां निष्पादन बनाया गया है, न कि प्लेटफॉर्म पर चल रहा है। अभी भी एक छोटा सा मौका है कि कुछ गीक 64 बिट्स कंप्यूटर पर 32 बिट संस्करण चला रहे हैं।

आप जैसे कुछ अधिक infos हो सकता है:

In [13]: platform.system() 
Out[13]: 'Linux' 

In [19]: platform.uname() 
Out[19]: 
('Linux', 
'asus-u6', 
'2.6.28-11-generic', 
'#42-Ubuntu SMP Fri Apr 17 01:57:59 UTC 2009', 
'i686', 
'') 

आदि

इस लाइव डेटा की तरह अधिक :-)

+0

मैं उस गीक हूँ। 64 बिट पायथन मौजूद है, लेकिन उस आर्किटेक्चर के लिए प्रीबिल्ट मॉड्यूल प्राप्त करना मुश्किल है, और लगभग स्थानीय लोगों को संकलित करने के लिए कठिन है। – SingleNegationElimination

0

linux आप "bitness" निर्धारित कर सकते हैं में लग रहा है

/proc/cpuinfo 

जैसे पढ़कर।

cat /proc/cpuinfo | grep flags 

यह

lm 

झंडा यह एक 86 64 बिट सीपीयू (भले ही आप 32 बिट linux स्थापित)

सुनिश्चित नहीं होता है, तो अगर यह रूप में अच्छी तरह से गैर x86 CPU के लिए काम करता है जैसे कि पीपीसी या एआरएम।

संबंधित मुद्दे

 संबंधित मुद्दे