Насколько велика DWORD с 32- и 64-битным кодом?
В Visual C++ DWORD - это просто unsigned long, который зависит от машины, платформы и SDK. Однако, поскольку DWORD является двойным словом (то есть 2 * 16), является ли DWORD по-прежнему 32-разрядным на 64-разрядных архитектурах?
9 ответов
На самом деле, на 32-битных компьютерах слово является 32-битным, но тип DWORD является пережитком старых добрых 16-битных дней.
Чтобы упростить перенос программ на более новую систему, Microsoft решила, что все старые типы не изменят размер.
Вы можете найти официальный список здесь: http://msdn.microsoft.com/en-us/library/aa383751(VS.85).aspx
Все платформо-зависимые типы, которые изменились с переходом с 32-разрядного на 64-разрядное, заканчиваются _PTR (DWORD_PTR будет 32-разрядным в 32-разрядной Windows и 64-разрядной в 64-разрядной Windows).
Он определяется как:
typedef unsigned long DWORD;
Однако, согласно MSDN:
На 32-битных платформах long является синонимом int.
Следовательно, DWORD является 32-битным в 32-битной операционной системе. Для 64-битного DWORD существует отдельное определение:
typdef unsigned _int64 DWORD64;
Надеюсь, это поможет.
Нет... на всех платформах Windows DWORD имеет 32 бита. LONGLONG или LONG64 используется для 64-битных типов.
Windows API определяет размеры DWORD следующим образом:
- x86: размер (DWORD) = 4
- x64: размер (DWORD) = 4
8 бит это байт. 2 байта это слово. Двойное слово или DWORD составляет 4 байта или 2 слова.
DWord - это двойное слово, а слово равно 65535. Тогда двойное слово будет равно 65535^2 = 4294836225 или ulong, а его слово размером 4 байта будет 2 байта.
И это 2 байта для хранения на жестком диске или отправки через Интернет.
:) Слово о современных процессорах 32-битное или 64-битное. Это просто длина указателя памяти (которая в свою очередь является емкостью ALU).
Но исторически "слово" в x86 составляет 16 бит (вместо 32). Таким образом, библиотеки Microsoft, которые исторически нацелены на x86, определяют DWORD как unsigned long, то есть "размер указателя машины".
Это все дети. Для дальнейшего использования см. Википедию.
Назовите long, dword32, dword64... как хотите, но байт равен 8 битам, слово - 2 байта, слово (двойное слово) - 2 слова, слово q (четверное слово) - 4 слова.
В 32 или 64-битных системах псевдонимы типа LONG или INT могут различаться, но слово dword все еще является двойным словом