2008-09-02 5 views
40

Visual C++では、DWORDは機械、プラットフォーム、およびSDKに依存する符号なしlongです。ただし、DWORDはダブルワード(2 * 16)なので、64ビットアーキテクチャではDWORDはまだ32ビットですか?32ビットと64ビットのコードを持つDWORDの大きさはどれですか?

+6

DWORDはマシン、プラットフォーム、SDKに依存しません。 –

+0

これはニックピックですが、技術的にはこの問題はCまたはC++に当てはまりますが、C++タグを削除するかCタグを追加する方が良いかもしれませんが、どちらが良いか分かりません。 – jrh

答えて

51

実際には、32ビットコンピュータでは1ワードは32ビットですが、DWORDタイプは16ビットの古き良き時代から残っています。

プログラムを新しいシステムに移植しやすくするために、Microsoftはすべての古いタイプがサイズを変更しないと判断しました。

あなたがここに公式のリストを見つけることができます。_ptrで終わる32ビットから64ビットへの移行で変更 http://msdn.microsoft.com/en-us/library/aa383751(VS.85).aspx

すべてのプラットフォーム依存の種類を(DWORD_PTRは、32の32ビットになります64ビット版Windowsでは64ビット)

+0

実際の範囲は[ここ](https://msdn.microsoft.com/en-us/library/s3f49ktz.aspx)に一覧表示されています。 –

+0

@LaurieStearnこの記事は、Microsoftコンパイラが 'DWORD'のようなwinapiデータ型ではなく、内部的に使用するデータ型に関するものだと思います。 – jrh

+1

ええ、回答のリンクされた[公式リスト](https://msdn.microsoft.com/en-us/library/aa383751(VS.85).aspx)の記事の範囲は次のとおりです。引用:** DWORD: 32ビットの符号なし整数。範囲は0〜4294967295の小数です** –

3

いいえ...すべてのWindowsプラットフォームDWORDは32ビットです。 LONGLONGまたはLONG​​64は、64ビット・タイプに使用されます。

+0

Windowsとは何の関係もなく、インテル用語 – Abyx

+2

@Abyxです。typedefの「DWORD」は非常にWindowsです。 – rubenvb

+2

@rubenvb、ああ、なぜそれが 'DWORD'と呼ばれ、' QBYTE'や 'DUBWD'のようなものではないのですか? – Abyx

14

それは次のように定義される。

typedef unsigned long  DWORD; 

しかし、MSDNによると:32ビット・プラットフォームで

、long int型と同義 です。

したがって、DWORDは32ビットオペレーティングシステムでは32ビットです。別の64ビットDWORDの定義があります。

typdef unsigned _int64 DWORD64; 

希望するものがあります。

-2

:)現代語プロセッサは、32ビットまたは64ビットのいずれかです。それは単純にメモリポインタの長さです(順番にALUの容量です)。

しかし、歴史的には、x86「word」は16ビット(32ではなく)です。これにより、歴史的にx86をターゲットとするマイクロソフトのライブラリは、DWORDを符号なしロング、すなわち「マシンポインタサイズ」と定義する。

これはすべての子供です。将来の参照のためにWikipediaを参照してください。

+1

(1)それは間違ったウィキペディアのページへのリンクです。 (2)質問はコンピュータアーキテクチャの言葉ではなく、Microsoftの「DWORD」タイプに関するものです。 –

+0

http://en.wikipedia.org/wiki/Word_(computer_architecture) "例えば、MicrosoftのWindows APIは、APIが32または64で使用されているにもかかわらず、WORDのプログラミング言語定義を16ビットとして維持しています標準のワードサイズはそれぞれ32ビットまたは64ビットになるだろう」と語った。 –

-4

コール長く、dword32、dword64 ...あなたが好きな、しかし バイトは8ビットで 語である2つのワード QWORD(クワッドワード)が4バイト2 DWORD(ダブルワード)ですされます32または64ビットシステムでは単語

はLONG​​またはINTのようなエイリアスが変化してもよいが、DWORDは依然として

+4

Microsoftは 'WORD'を2バイト、' DWORD'を4バイト、 'QWORD'を8バイトとみなします。 –

-1

8ビットバイトでダブルワードです。 2バイトは単語です。ダブルワードまたはDWORDは4バイトまたは2ワードです。

+1

単語の長さはプロセッサによって異なります。 DWORDは、2バイトワードの16ビットプロセッサが標準であるときに名前が付けられました。 Microsoftは、32ビット以上のプロセッサに移行したときの長さを変更しないことに決めました。 – Ben

関連する問題