8ビットは「バイト」と呼ばれます。16ビットはどのように呼ばれますか?"短い"?"語"?
そして、32ビットはどうですか?「int」はCPUに依存していることを知っています。普遍的に適用できる名前に興味があります。
8ビットは「バイト」と呼ばれます。16ビットはどのように呼ばれますか?"短い"?"語"?
そして、32ビットはどうですか?「int」はCPUに依存していることを知っています。普遍的に適用できる名前に興味があります。
バイトは、コンピューターが処理できるデータの最小単位です。C 言語ではchar
、1 つの「バイト」と定義され、CHAR_BIT
ビットがあります。ほとんどのシステムでは、これは 8 ビットです。
一方、単語は通常、CPU によって通常処理される値のサイズです。ほとんどの場合、これは汎用レジスターのサイズです。この定義の問題点は、うまく老化しないことです。
たとえば、MS Windows のWORD
データ型は、16 ビット CPU が標準であった初期の頃に定義されました。32 ビット CPU が登場したとき、定義は残り、32 ビット整数はDWORD
. そして今、64 ビットQWORD
の s があります。
「普遍的」とはほど遠いですが、この問題に関するいくつかの異なる見解を以下に示します。
窓:
BYTE
- 8 ビット、符号なしWORD
- 16 ビット、符号なしDWORD
- 32 ビット、符号なしQWORD
- 64 ビット、符号なしGDB :
uint8_t
- 8 ビット、符号なしuint16_t
- 16 ビット、符号なしuint32_t
- 32 ビット、符号なしuint64_t
- 64 ビット、符号なしuintptr_t
- ポインタサイズの整数、符号なし(Signed 型も存在します。)
特定のデータ型のサイズに依存する移植可能なコードを作成しようとしている場合 (たとえば、ネットワーク プロトコルを実装している場合) 、常に<stdint.h>
.
16 ビットまたは 32 ビットの測定単位に共通の名前はありません。
「ワード」という用語は、プログラムまたはオペレーティング システムによって一度に処理されるビット数を表すために使用されます。したがって、16 ビット CPU では、語長は 16 ビットです。32 ビット CPU では、語長は 32 ビットです。また、この用語は少し柔軟だと思うので、たとえば 10 ビットのチャンクですべての処理を行うプログラムを作成する場合、それらの 10 ビットのチャンクを「ワード」と呼ぶことができます。
明確にするために。「int」は、コンピューター メモリの測定単位ではありません。実際には、整数を格納するために使用されるデータ型です (つまり、10 進数の要素が 0 の数値)。したがって、プログラミング言語で 2 ビット (または何でも) のみを使用して整数を実装する方法を見つけたとしても、それは int のままです。
Dr. Werner Buchholz は、「コンピューターが処理できる最小量のデータとして、ビットの順序付けられたグループを表すデジタル情報の単位」を意味するバイトという言葉を作り出しました。したがって、単語の実際の意味は、問題のマシンのアーキテクチャに依存します。したがって、1 バイトのビット数は任意であり、8、16、または 32 の場合もあります。
この主題に関する完全な論文については、Wikipediaを参照してください。
私は以前、バイト、ワード、ロングワードと呼ばれるそれらを耳にしました。しかし、他の人が言及しているように、それはあなたが取り組んでいるネイティブアーキテクチャに依存しています。
それらは2バイトと4バイトと呼ばれます
16ビットと32ビットの普遍的な用語はありません。単語のサイズはマシンによって異なります。
short
、word
およびint
すべてコンパイラやアーキテクチャに依存しています。
int
はデータ型であり、デスクトップの 32 ビットまたは 64 ビット システムでは通常32 ビットです。基盤となるハードウェアのレジスタ サイズよりも大きくなるとは思わないので、一般的な用途では常に高速な (通常は十分な大きさの) データ型である必要があります。short
それよりもサイズが小さい可能性int
があります。それがあなたが知っているすべてです。実際には、通常は16 ビットですが、それに依存することはできません。word
はデータ型ではなく、基盤となるハードウェアの自然なレジスタ サイズを示します。そして、16 ビットや 32 ビットの名前に関しては、何もありません。それらにラベルを付ける理由はありません。