Wie finde ich heraus, ob mein Prozessor 32 Bit oder 64 Bit (in Ihrer Sprache der Wahl) hat? Ich möchte das sowohl für Intel- als auch für AMD-Prozessoren wissen.Wie kann ich feststellen, ob meine CPU 32 oder 64 Bit hat?
Antwort
von Windows, 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;
}
Können Sie angeben, welche Sprache dies ist (ja, * ich * weiß, andere nicht) und andere Anforderungen (z. B. Header-Dateien)? – paxdiablo
Oder, was OS, was? Funktioniert das auf meinem Mac Mini, meinen Linux-Boxen und meinen Windows XP- und Vista-Systemen? –
Bah - kann nicht bearbeiten ... aber so * muss * die 'default:' zu diesem Schalter hinzufügen ... :-) –
Ich dachte, auf einem 64-Bit-Prozessor, Zeiger sind 64-Bit. Anstatt also die Prozessoreigenschaften zu überprüfen, können Zeiger verwendet werden, um sie programmatisch zu testen. Es könnte so einfach sein wie das Erstellen einer Struktur mit zwei zusammenhängenden Zeigern und dann das Überprüfen ihres "Schritts".
Nein, wird nicht mit 32-Bit-Code auf 64-Bit-fähigen Prozessor helfen. – mghie
C#, OS Agnostiker
sizeof(IntPtr) == 4 ? "32-bit" : "64-bit"
Diese etwas roh ist aber im Grunde sagt Ihnen, ob die CLR als 32-Bit- oder 64-Bit ausgeführt wird, was wahrscheinlicher ist, was Sie würden wissen müssen. Die CLR kann beispielsweise als 32-Bit auf einem 64-Bit-Prozessor ausgeführt werden.
Weitere Informationen finden Sie hier: How to detect Windows 64-bit platform with .NET?
Der schwierige Bit ist für Sie vielleicht ein 64-Bit-CPU, sondern ein 32-Bit-OS. Wenn Sie sich für diesen Fall interessieren, benötigen Sie einen ASM-Stub, um die CPU abzufragen. Wenn nicht, können Sie das OS einfach fragen.
VBScript, Windows-:
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
Eine andere mögliche Lösung für Windows Script Host, diesmal in JScript und mit Hilfe der PROCESSOR_ARCHITECTURE Umgebungsvariable:
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
}
In .NET können Sie x86 von x64 unterscheiden indem Sie die Size-Eigenschaft der IntPtr-Struktur betrachten. Die IntPtr.Size Eigenschaft wird in Bytes, 8 Bits pro Byte zurückgegeben, so dass es gleich 4 auf einer 32-Bit-CPU und 8 auf einer 64-Bit-CPU ist. Da wir von 32-Bit- und 64-Bit-Prozessoren sprechen und nicht von 4-Byte- oder 8-Byte-Prozessoren, mache ich gerne den Vergleich in Bits, was deutlicher macht, was vor sich geht.
C#
if(IntPtr.Size * 8 == 64)
{
//x64 code
}
Powershell
if([IntPtr]::Size * 8 -eq 64)
{
#x64 code
}
C# Code:
int size = Marshal.SizeOf(typeof(IntPtr));
if (size == 8)
{
Text = "64 bit";
}
else if (size == 4)
{
Text = "32 bit";
}
In Python:
In [10]: import platform
In [11]: platform.architecture()
Out[11]: ('32bit', 'ELF')
Wie immer, ziemlich ordentlich. Aber ich bin mir ziemlich sicher, dass diese Funktionen die Plattform zurückgeben, auf der der Exec gebaut wurde, nicht die Plattformen, auf denen er läuft. Es gibt immer noch eine kleine Chance, dass ein Geek eine 32-Bit-Version auf einem 64-Bit-Computer ausführt.
Sie können einige mehr Infos wie haben:
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',
'')
ETC.
Das sieht eher wie Live-Daten :-)
Ich bin dieser Geek. 64bit Python existiert, aber es ist schwierig, vorgefertigte Module für diese Architektur zu bekommen, und fast so schwer zu bekommen, dass sie lokal kompiliert werden. – SingleNegationElimination
In Linux können Sie die "Bitness" bestimmen durch das Lesen
/proc/cpuinfo
zB.
cat /proc/cpuinfo | grep flags
wenn es enthält die
lm
Flagge es eine CPU x86 64 Bit ist (auch wenn Sie 32-Bit-Linux installiert haben)
Nicht sicher, ob dies auch für nicht x86-CPUs arbeitet wie PPC oder ARM.
- 1. Wie kann ich feststellen, ob meine Anwendung als 32-Bit- oder 64-Bit-Anwendung ausgeführt wird?
- 2. Wie kann ich feststellen, ob meine Cygwin-Installation 32 oder 64 Bit ist?
- 3. Laufen auf 32 oder 64 Bit Matlab?
- 4. Wie kann man feststellen, dass 32 Bit oder 64 Bit ASP.NET verwendet wird?
- 5. Habe ich Numpy 32 Bit oder 64 Bit?
- 6. Wie kann ich programmgesteuert feststellen, ob eine DLL 32 Bit oder 64 Bit in .NET kompiliert ist?
- 7. wie Windows7 Bit-Version, 32 Bit oder 64 Bit wissen?
- 8. Ermitteln, ob das iOS-Gerät 32- oder 64-Bit ist
- 9. Größe der Maschine 64 oder 32 Bit
- 10. Sollte ich 32-Bit- oder 64-Bit-JDK verwenden?
- 11. Wie kann ich eine beliebige CPU.NET-Programmdatei programmgesteuert in 32-Bit- oder 64-Bit-Konfigurationen ausführen?
- 12. Wie überprüft man, ob die installierte Anaconda 32-Bit oder 64-Bit ist?
- 13. Wie kann ich überprüfen, ob mein Programm für 32 oder 64-Bit-Prozessor kompiliert ist?
- 14. Ist iPhone OS 64 Bit oder 32 Bit?
- 15. Meine 32-Bit-Kopfschmerzen sind jetzt eine 64-Bit-Migräne?!? (oder 64bit .NET CLR Runtime-Probleme)
- 16. Office 64 Bit & IE 32 Bit & VBScript
- 17. Ermitteln von 64-Bit- oder 32-Bit-Windows
- 18. Wie kann ich zwischen 32-Bit- oder 64-Bit-Build in C# Express wählen?
- 19. SQL Server 2012 32-Bit oder 64-Bit auf 64-Bit-Maschine?
- 20. 32-Bit-DLL in Office 64 Bit
- 21. Wie kann ich feststellen, ob mein IE 64-Bit ist? (In der Tat, Java auch?)
- 22. Einzel 32-Bit-MSI mit 32/64-Bit-Treiber
- 23. Java-32-Bit-64-Bit-Kompatibilität
- 24. 32-Bit-DLL in 64-Bit importieren. NET-Anwendung
- 25. 64-Bit-Assembly Anweisungen von 32 Bit
- 26. 32-Bit- oder 64-Bit-Android-SDK unter Windows 64-Bit-Betriebssystem?
- 27. C# 32-Bit-App 64-Bit-Registrierung
- 28. Kompilieren 32 Bit von Win7 64 Bit
- 29. kann nicht 32-Bit-DLL unter 64-Bit-Windows-
- 30. Kann Windows Vererbung die 32-Bit-/64-Bit-Grenze umgehen?
Sie müssen mindestens die Sprache, die Sie versuchen, diese Informationen zu finden, in – JaredPar
bereitstellen Das sieht nicht wie eine Programmierfrage aus. –
Nein, keine Programmierfrage. sollte geschlossen werden –