32位和64位代码的DWORD有多大?

问题描述:

在Visual C++中,DWORD只是一个无符号长整数,与机器,平台和SDK相关。但是,由于DWORD是双字(即2 * 16),在64位体系结构上还是32位的DWORD?32位和64位代码的DWORD有多大?

+6

DWORD不是机器,平台,也不是SDK相关的。 – 2013-07-16 17:40:08

+0

这是一个挑剔的问题,但从技术上讲这个问题适用于C或C++,最好是移除C++标记或添加C标记,但我不确定哪个更好。 – jrh 2017-12-26 21:05:20

实际上,在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位Windows上的64位)。

没有...在所有Windows平台上DWORD是32位。 LONGLONG或LONG64用于64位类型。

+0

它与Windows无关,它是英特尔术语 – Abyx 2013-07-16 17:48:10

+2

@Abyx:typedef DWORD是非常Windows的。 – rubenvb 2013-07-16 19:53:49

+2

@rubenvb,哦,为什么它被称为`DWORD`,而不是其他类似`QBYTE`或`DUBWD`的东西? – Abyx 2013-07-16 20:47:41

它被定义为:

typedef unsigned long  DWORD; 

然而,根据MSDN:

在32位的平台,long是 代名词INT。

因此,DWORD是32位操作系统上的32位。有一个单独的64bit DWORD的定义:

typdef unsigned _int64 DWORD64; 

希望有所帮助。

:)字现代处理器是32位或64位。这只是内存指针的长度(这是ALU的容量)。

但是历史上x86“word”是16位(而不是32位)。因此历史上以x86为目标的Microsoft库将DWORD定义为无符号长整型,即“机器指针大小”。

这就是所有的孩子。以供参考,请参阅Wikipedia

+1

(1)这是一个错误的*页面的链接。 (2)这个问题不是关于计算机体系结构的话,而是关于微软的'DWORD'类型。 – 2013-07-16 17:42:23

呼叫长,dword32,dword64 ......任何你想要的,但 一个字节为8位 一个字是2个字节 一个DWORD(双字)为2个字 一个四字(四字)为4词语

在32或64位系统,如LONG或INT别名可以变化,但是一个DWORD仍然是一个双字

8比特是一个字节。 2个字节是一个字。双字或DWORD是4个字节或2个字。