2008-09-02 28 views
40

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?

+6

A a DWORD no depende de la máquina, la plataforma ni el SDK. –

+0

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

Respuesta

51

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).

+0

Los rangos reales se enumeran [aquí] (https://msdn.microsoft.com/en-us/library/s3f49ktz.aspx). –

+0

@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

+1

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. ** –

3

No ... en todas las plataformas Windows DWORD es de 32 bits. LONGLONG o LONG64 se usa para tipos de 64 bits.

+0

no tiene nada que ver con Windows, es el término Intel – Abyx

+2

@Abyx: el typedef 'DWORD' es muy Windows. – rubenvb

+2

@rubenvb, oh y por qué se llama 'DWORD' y no es algo como' QBYTE' o 'DUBWD'? – Abyx

14

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.

-2

:) 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

(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. –

+0

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. " –

-4

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

+4

Microsoft considera que un 'WORD' es de 2 bytes, un' DWORD' de 4 bytes y un 'QWORD' de 8 bytes. –

-1

8 bits es un byte. 2 bytes es una palabra. La palabra doble o DWORD tiene 4 bytes o 2 palabras.

+1

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

Cuestiones relacionadas