En Visual C++, un DWORD es solo un largo sin signo que depende de la máquina, la plataforma y el SDK. Sin embargo, dado que DWORD es una palabra doble (es decir 2 * 16), ¿sigue siendo DWORD de 32 bits en las arquitecturas de 64 bits?¿Qué tan grande es un DWORD con código de 32 y 64 bits?
Respuesta
En realidad, en las computadoras de 32 bits, una palabra es de 32 bits, pero el tipo DWORD es un remanente de los viejos tiempos de 16 bits.
Para facilitar la migración de los programas al nuevo sistema, Microsoft ha decidido que todos los tipos antiguos no cambiarán de tamaño.
Puede encontrar la lista oficial aquí: http://msdn.microsoft.com/en-us/library/aa383751(VS.85).aspx
Todos los tipos dependientes de la plataforma que han cambiado con el paso de 32 bits a 64 bits termina con _PTR (DWORD_PTR será de 32 bits en 32- poco de Windows y 64 bits en Windows de 64 bits).
Los rangos reales se enumeran [aquí] (https://msdn.microsoft.com/en-us/library/s3f49ktz.aspx). –
@LaurieStearn Creo que este artículo trata sobre los tipos de datos que los compiladores de Microsoft usan internamente, no los tipos de datos winapi como 'DWORD'. – jrh
Sí, el artículo de la lista enlazada de la respuesta [lista oficial] (https://msdn.microsoft.com/en-us/library/aa383751 (VS.85) .aspx) ahora tiene los rangos: Cita: ** DWORD: Un entero sin signo de 32 bits. El rango es de 0 a 4294967295 decimal. ** –
No ... en todas las plataformas Windows DWORD es de 32 bits. LONGLONG o LONG64 se usa para tipos de 64 bits.
Se define como:
typedef unsigned long DWORD;
Sin embargo, de acuerdo con la MSDN:
En las plataformas de 32 bits, tiempo es el sinónimo de int.
Por lo tanto, DWORD es de 32 bits en un sistema operativo de 32 bits. Hay una definición separada para un DWORD de 64 bits:
typdef unsigned _int64 DWORD64;
Espero que ayude.
:) palabra en los procesadores modernos es de 32 bits o de 64 bits. Es simplemente la longitud del puntero de la memoria (que es la capacidad de la ALU por turno).
Pero históricamente x86 "palabra" es de 16 bits (en lugar de 32). De este modo, las bibliotecas de Microsoft que apuntan históricamente a x86, definen DWORD como unsigned long, es decir, "tamaño del puntero de la máquina".
Eso es todo para niños. Para referencia futura, ver Wikipedia.
(1) Ese es un enlace a la página incorrecta de wikipedia. (2) La pregunta no es sobre una palabra de arquitectura informática, sino sobre el tipo 'DWORD' de Microsoft. –
http://en.wikipedia.org/wiki/Word_(computer_architecture) "Por ejemplo, la API de Windows de Microsoft mantiene la definición del lenguaje de programación de WORD en 16 bits, a pesar de que la API se puede usar en un 32 o 64 procesador de bit x86, donde el tamaño de palabra estándar sería 32 o 64 bits, respectivamente. " –
Call mucho, dword32, dword64 ... lo que quieras, pero un byte son 8 bits una palabra es de 2 bytes un DWORD (palabra doble) es de 2 palabras un QWord (palabra cuádruple) es 4 palabras
en sistemas de 32 o de 64 bits los alias como LONG o INT pueden variar, pero un DWORD es todavía una palabra doble
Microsoft considera que un 'WORD' es de 2 bytes, un' DWORD' de 4 bytes y un 'QWORD' de 8 bytes. –
8 bits es un byte. 2 bytes es una palabra. La palabra doble o DWORD tiene 4 bytes o 2 palabras.
La longitud de una palabra depende del procesador. DWORD fue nombrado de nuevo cuando las procesadores de 16 bits de palabras de 2 bytes eran la norma. Microsoft decidió no cambiar la longitud cuando pasaron a procesadores de 32 bits y superiores. – Ben
- 1. ¿Qué tan grande puede ser un entero de 64 bits con signo?
- 2. 64 bits por división de 32 bits
- 3. ¿Qué tan bien soporta D 64 bits?
- 4. ¿Qué tan grande es wchar_t con GCC?
- 5. MapViewOfFile compartido entre procesos de 32 bits y 64 bits
- 6. Compatibilidad con Java de 32 bits frente a 64 bits
- 7. Objeto compartido/bibliotecas mixtas de 32 bits y 64 bits
- 8. Compilación de 32 bits con llvm-gcc de 64 bits
- 9. Siempre es de 64 bits en las máquinas de 32 y 64 bits
- 10. Mezcla de 32 bits y 64 bits P/Invoca
- 11. ¿iPhone OS es de 64 bits o 32 bits?
- 12. División de 64/32 bits en un procesador con división de 32/16 bits
- 13. Instalar controladores de 32 y 64 bits con Wix?
- 14. Problema MSBuild y $ (ProgramFiles) con 32/64 bits
- 15. uint es de 32 bits, sin importar si el sistema es de 32 o 64 bits?
- 16. Agregar números de 64 bits con aritmética de 32 bits
- 17. ¿Cuál es la diferencia entre un procesador de 32 bits y de 64 bits?
- 18. Tamaño de dll de 64 bits 50% más grande que 32-bit
- 19. ¿Por qué es GHC tan grande/grande?
- 20. ¿Por qué es fPIC absolutamente necesario en 64 y no en plataformas de 32 bits?
- 21. individual de 32 bits con 32 MSI/controladores de 64 bits
- 22. Qué comando usar para comprobar si python es de 64 bits o de 32 bits
- 23. Interoperabilidad de 32 y 64 bits en Windows de 64 bits
- 24. ¿Por qué __sync_add_and_fetch funciona para una variable de 64 bits en un sistema de 32 bits?
- 25. Utilice un instalador de NSIS para instalar binarios de 32 bits en sistemas operativos de 32 bits y binarios de 64 bits en sistemas operativos de 64 bits.
- 26. conversión de aplicación .NET 32 bits a 64 bits
- 27. Registros de 64 bits en ventanas de 32 bits
- 28. ¿Cómo es que un kernel de 32 bits puede ejecutar un binario de 64 bits?
- 29. MinGW GCC: compilador cruzado simple de 32 y 64 bits.
- 30. ¿Aplicación de 32 bits o de 64 bits en el sistema operativo de 64 bits?
A a DWORD no depende de la máquina, la plataforma ni el SDK. –
Esto es una trampa, pero técnicamente esta pregunta se aplica a C o C++, podría ser mejor eliminar la etiqueta C++ o agregar la etiqueta C, pero no estoy seguro de cuál es mejor. – jrh