ビット番号

コンピューターにおいて、ビット番号とは、 2進数ビット位置を識別するために使用される規則です。ビットは、メモリのバイトまたはワード内のビット、あるいはCPU内部レジスタデータバス上のビットを指します。

ビットの重要性とインデックス

150 12月MSbLSb
ビットコンテンツ10010110

コンピューター において、最下位ビット( LSb ) は2 進整数内のビット位置であり、整数の最下位の位を表します。同様に、最上位ビット( MSb ) は 2 進整数の最上位の位を表します。 LSb は下位ビットと呼ばれることもあります。位置表記法では下位の桁を右へ書く慣例により、 LSb は右端のビットと呼ばれることもあります。同様に、 MSb は上位ビットまたは左端のビットと呼ばれます。どちらの場合も、 LSb と MSb は10 進整数の最下位と最上位桁に直接対応します。

ビットインデックスは、2進数における値の位置表記と相関します。そのため、ビットインデックスは、値のバイト順序など、デバイス上での値の格納方法の影響を受けません。むしろ、これは2進数における数値自体の特性です。これは、プログラミングにおいてビットシフトを介してよく利用されます。つまり、 の値は、 の2進整数のn番目のビットに対応します。 1 << n2n

デジタルステガノグラフィーにおける最下位ビット

デジタルステガノグラフィーでは、画像や音声ファイルの最下位ビットに情報を操作して保存することで、機密メッセージを隠蔽することができます。ユーザーは後から、操作されたピクセルの最下位ビットを抽出して元のメッセージを復元することで、この情報を復元できます。これにより、デジタル情報の保存や転送を秘匿性を維持できます。

色の最下位ビットを操作することで、色に非常に微妙で、通常は気づかないほどの影響が出る可能性があることを示す図。この図では、緑はRGB値で10進数と2進数の両方で表されています。最後の2ビットを囲む赤い枠は、2進数表現で変更された最下位ビットを示しています。

符号なし整数の例

LSb 0の149小数点MSbLSb
ビット重量27{\displaystyle 2^{7}}12826{\displaystyle 2^{6}}6425{\displaystyle 2^{5}}3224{\displaystyle 2^{4}}1623{\displaystyle 2^{3}}822{\displaystyle 2^{2}}421{\displaystyle 2^{1}}220{\displaystyle 2^{0}}1
ビットコンテンツ10010101

この表は、10進数値149とLSbの位置の例を示しています。この例では、単位値(10進数値の1または0)の位置はビット位置0(n = 0)にあります。MSbは最上位ビット(Most Significant Bit) 、LSbは最下位ビット(Least Significant Bit)を表します。

符号付き整数の例

LSb 0の-126小数点MSbLSb
ビット重量27{\displaystyle -2^{7}}−12826{\displaystyle 2^{6}}6425{\displaystyle 2^{5}}3224{\displaystyle 2^{4}}1623{\displaystyle 2^{3}}822{\displaystyle 2^{2}}421{\displaystyle 2^{1}}220{\displaystyle 2^{0}}1
ビットコンテンツ10000010

この表は、2の補数法を用いた8ビット符号付き10進数値の例を示しています。符号付き整数では、MSB(最上位ビット)は負の重みを持ち、この場合は -2 7 = -128 となります。その他のビットは正の重みを持ちます。LSB(最下位ビット)の重みは1です。この場合、符号付き値は -128+2 = -126 となります。

上位ビットから最下位ビットが最初

「最上位ビットが最初」および「最下位ビットが最初」という表現は、シリアル伝送プロトコルまたはストリーム (オーディオ ストリームなど) でワイヤ経由で送信されるバイト内のビットのシーケンスの順序を示します。

「最上位ビットが最初」とは、最上位ビットが最初に到着することを意味します。したがって、たとえば、16 進数 は0x12000100102 進表現では、シーケンス として到着します0 0 0 1 0 0 1 0

最下位ビットが最初とは、最下位ビットが最初に到着することを意味します。したがって、たとえば、同じ 16 進数 は0x12、再び000100102 進表現では、(逆の) シーケンス として到着します0 1 0 0 1 0 0 0

LSb 0 ビット番号

LSb 0の150小数点MSbLSb
ビット番号70
ビット重量27{\displaystyle 2^{7}}12826{\displaystyle 2^{6}}6425{\displaystyle 2^{5}}3224{\displaystyle 2^{4}}1623{\displaystyle 2^{3}}822{\displaystyle 2^{2}}421{\displaystyle 2^{1}}220{\displaystyle 2^{0}}1
ビットコンテンツ10010110

最下位ビット(LSb)のビット番号が0から始まる場合、その番号付け方式はLSb 0と呼ばれます。[ 1 ]このビット番号付け方法の利点は、任意の符号なし数値の値が、ビット番号と2を底とする指数を使用して計算できることです。[ 2 ]したがって、 符号なし2進整数の値は

01b2{\displaystyle \sum _{i=0}^{N-1}b_{i}\cdot 2^{i}}

ここで、b i は番号iのビットの値を表し、N は合計ビット数を表します。

MSb 0 ビット番号

MSb 0で150開発MSbLSb
ビット番号07
ビット重量270{\displaystyle 2^{7-0}}128271{\displaystyle 2^{7-1}}64272{\displaystyle 2^{7-2}}32273{\displaystyle 2^{7-3}}16274{\displaystyle 2^{7-4}}8275{\displaystyle 2^{7-5}}4276{\displaystyle 2^{7-6}}2277{\displaystyle 2^{7-7}}1
ビットコンテンツ10010110

最上位ビット (MSb) のビット番号が 0 から始まる場合、番号付け方式はMSb 0と呼ばれます。

したがって、符号なし2進整数の値は

01b21{\displaystyle \sum _{i=0}^{N-1}b_{i}\cdot 2^{N-1-i}}

他の

MSb 1の番号付けの場合、符号なし2進整数の値は

1b2{\displaystyle \sum _{i=1}^{N}b_{i}\cdot 2^{Ni}}

PL/I は、左端のビットを 1 として BIT文字列に番号を付けます。

Fortran BTEST関数はLSb 0 の番号付けを使用します。

参照

参考文献

  1. ^ Langdon , Glen G. (1982).コンピュータデザイン. Computeach Press Inc. p.  52. ISBN 0-9607864-0-6
  2. ^ 「ビット番号」 。 2021年3月30日閲覧