Comment puis-je savoir si mon processeur est 32 bits ou 64 bits (dans la langue de votre choix)? Je veux savoir ceci pour les processeurs Intel et AMD.Comment puis-je savoir si mon processeur est en 32 ou 64 bits?
Répondre
de 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;
}
Pouvez-vous spécifier quelle langue est-ce (oui, * je * connais mais d'autres ne le peuvent pas) et d'autres exigences (par exemple, les fichiers d'en-tête)? – paxdiablo
Ou, d'ailleurs, quel OS? Est-ce que cela fonctionnera sur mon Mac Mini, mes machines Linux et mes systèmes Windows XP et Vista? –
Bah - ne peut pas éditer ... mais si * besoin * d'ajouter le «défaut:» à ce commutateur ... :-) –
Je pensais, sur un processeur 64 bits, les pointeurs sont 64 bits. Ainsi, au lieu de vérifier les fonctionnalités du processeur, il est peut-être possible d'utiliser des pointeurs pour le 'tester' par programmation. Cela pourrait être aussi simple que de créer une structure avec deux pointeurs contigus, puis de vérifier leur «foulée».
Non, n'aidera pas avec le code 32 bits en cours d'exécution sur le processeur 64 bits activé. – mghie
C#, OS agnostique
sizeof(IntPtr) == 4 ? "32-bit" : "64-bit"
C'est un peu brut mais vous indique essentiellement que le CLR est en cours d'exécution en 32 bits ou 64 bits, ce qui est plus probablement ce que vous devez savoir. Le CLR peut fonctionner en 32 bits sur un processeur 64 bits, par exemple.
Pour plus d'informations, voir ici: How to detect Windows 64-bit platform with .NET?
Le peu délicat ici est que vous pourriez avoir un 64 bit CPU, mais un système d'exploitation 32 bits. Si vous vous souciez de ce cas, il faudra un astérisque pour interroger le CPU. Sinon, vous pouvez demander l'OS facilement.
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
Une autre solution possible pour Windows Script Host, cette fois dans JScript et en utilisant la variable d'environnement 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
}
Dans .NET vous pouvez différencier x86 de 64 bits en regardant la propriété Size de la structure IntPtr. La propriété IntPtr.Size est retournée en octets, 8 bits par octet donc elle est égale à 4 sur un processeur 32 bits et 8 sur un processeur 64 bits. Puisque nous parlons de processeurs 32 bits et 64 bits plutôt que de processeurs 4 octets ou 8 octets, j'aime faire la comparaison en bits, ce qui rend plus clair ce qui se passe.
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";
}
En Python:
In [10]: import platform
In [11]: platform.architecture()
Out[11]: ('32bit', 'ELF')
Comme d'habitude, assez soigné. Mais je suis à peu près sûr que ces fonctions renvoient la plate-forme où l'exec a été construit, pas les plates-formes sur lesquelles il s'exécute. Il y a encore une petite chance qu'un geek lance une version 32 bits sur un ordinateur 64 bits.
Vous pouvez avoir plus d'infos comme:
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.
Cela ressemble plus à des données en direct :-)
Je suis ce geek. Il existe des python 64 bits, mais il est difficile d'obtenir des modules préconstruits pour cette architecture, et presque aussi difficile d'obtenir des modules de travail compilés localement. – SingleNegationElimination
Sous Linux, vous pouvez déterminer le "bitness" en lisant
/proc/cpuinfo
par exemple.
cat /proc/cpuinfo | grep flags
si elle contient le
lm
drapeau il est un x86 64 bit CPU (même si vous avez 32 linux bits installé)
Je ne sais pas si cela fonctionne pour les processeurs non x86 et tels que PPC ou ARM.
- 1. L'iPhone OS 64 bits ou 32 bits?
- 2. Exécution C# sachant si la version 32 bits ou 64 bits de l'interface COM est utilisée
- 3. En cours d'exécution sur matlab 32 ou 64 bits?
- 4. directive C# pour indiquer 32 bits ou 64 bits construire
- 5. . Console app 32 vs 64 bits
- 6. Compiler le projet 32 bits VS 2003 en 64 bits
- 7. Chargement d'un processus 32 bits dans un environnement 64 bits
- 8. application .net 2.0 dans le processeur 64 bits?
- 9. Construire 32 bits avec llvm-gcc 64 bits
- 10. Comment pouvez-vous détecter à l'exécution si votre instance sql-server 2005 est une instance 32 ou 64 bits?
- 11. Impossible d'exécuter les applications 32 bits sur Linux 64 bits
- 12. Sérialisation binaire .NET entre OS 32 bits et 64 bits
- 13. Détermination de Windows 64 bits vs 32 bits
- 14. Appel code 32 bits à partir de 64 bits Processus
- 15. Dev .NET 32 bits par rapport à 64 bits prod
- 16. SHGetFolderPath() 32 bits par rapport à 64 bits
- 17. Comment enregistrer une DLL 64 bits (sur un système d'exploitation 64 bits) à partir d'une application 32 bits
- 18. Détection d'un jre 64 bits dans un navigateur 32 bits?
- 19. Application java 64 bits à utiliser 32 bits dll
- 20. Comment déterminer ASP.NET 32 bit vs. 64 bits utilisé?
- 21. Compilation avec DMD sur Linux 64 bits ou Liaison avec des fichiers objet 32 bits
- 22. Comment puis-je savoir si mon application fonctionne sous Windows x86 ou x64?
- 23. Comment lancer un processus Windows en 64 bits à partir d'un code 32 bits?
- 24. 64/32 bits standard traduction du pilote dans Windows
- 25. Chargement de 32 bits DLL en utilisant Excel 2007 (version Vista 64 bits)
- 26. Ubuntu 64 bits vs 32 bits sur les systèmes à faible mémoire - pourquoi Ubuntu 64 bits mange ma RAM?
- 27. Est-il possible de détecter 32 bits par rapport à 64 bits dans un script bash?
- 28. Comment savoir si mon iPhone est en mode silencieux?
- 29. Comment puis-je installer un fichier avec WiX sous condition sur la machine cible (32 bits ou 64 bits)?
- 30. Est-ce qu'un lien EXE 64 bits contre les DLL 32 bits?
Vous devrez au moins fournir la langue dans laquelle vous essayez de trouver cette information dans – JaredPar
Cela ne ressemble pas à une question de programmation. –
Nope pas une question de programmation. devrait être fermé –