2

1 バイトが 2 進表記の 8 ビットで表される場合、8 つの可能な 1 と 0 のシーケンスがあります。したがって、00101010 は、16 進数表記を使用して 2A に短縮できます。私の本によると、右から 4 番目の後に 16 進数を使用すると、その表現を短くすることができます。例えば...

00101010

は、左側の 0010 の 4 桁を取り、そのシーケンスを 16 進数で 2 に等しいと表すことにより、16 進数表記と 2 進数表記を組み合わせて表すことができます。0010 は 32 に等しいので、16 を底とする 2 に等しい 16 進数表記を使用している場合は理解できます。

私が理解していないのは、シーケンスの右側がどのように表されているかです。私の本によると、1010 は 10 に等しい文字 A で表すことができます。

8ビットシーケンスの左側と同じ概念を右側に適用しても、ライドサイドを10で割るべきではありません. 16の累乗を持つ16進数表記は? 私はそれについて間違って考えていますか?

4

2 に答える 2

2

完全な 8 ビット バイトから始めましょう。各桁の下に位の値を書きます。

0 0 1 0 1 0 1 0
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
↓ ↓ ↓ ↓ 8 4 2 1
↓ ↓ ↓ 16
↓ ↓ 32
↓ 64
128

したがって、10 進法では、これは 32 + 8 + 2 = 42 です。

8 ビット バイトを 2 つの 4 ビット ニブルに分割すると、

0 0 1 0  1 0 1 0
↓ ↓ ↓ ↓  ↓ ↓ ↓ ↓
8 4 2 1  8 4 2 1

各 4 ビット ニブルが 0 から 15 までの値を保持できることがわかります。したがって、ニブルは 2 桁の 16 進数を表すことができます。

値を計算するとき、2 つのニブルを同じように扱います。左から右へ、各ニブルの桁の桁の値は 8、4、2、1 です。したがって、上 (左) ニブルの値は 2 で、下 (右) ニブルの値は 8 + 2 = 10 です。おっしゃるとおり、10進数の10は16進数でAと書きますので、16進数のバイトを書き2Aます。

ただし、これは 16 進数であることを忘れないでください。したがって、桁の値は 16 のべき乗です。

2 A
↓ ↓
↓ 1
16

したがって、10 進数に戻すと、2A = 2×16 + 10 = 32 + 10 = 42 になります。

于 2013-07-29T01:05:53.550 に答える
1

2 進数を 16 進数に変換する場合、左 4 ビットは右 4 ビットと同じ扱いになります。「2 進数から 16 進数へ」が行うことは、4 ビットのシーケンスを 1 つの 16 進数に置き換えることだけです。この段階では、「完全な」数値への変換について心配する必要はありません。

あなたの例00101010は、2 つの 4 ビット シーケンスに分割できます:00101010. これらのそれぞれを 16 進数に変換するには、右から左にそれらを加算し、次の各ビットを 2 倍します。これは、10 進数で食べていたものとまったく同じです。532は "10^0 * 2 + 10^1 * 3 + 10^2 * 5" を表します (^は "べき乗" の通常の短縮形です)。したがって、取得する最初の 4 ビットについては、

0*1 + 1*2 + 0*4 + 0*8 = 2

および 4 ビットの 2 番目のセット

0*1 + 1*2 + 0*4 + 1*8 = 10

16 進数では、0 から 15 までの各値は 1 つの「数字」で表され、9 で 1 桁がなくなります。したがって、10 から始めて、A、B、C、D、E、および F を使用して、10 進値 10、11、12、13、14、および 15。

したがって、 の 16 進表現1010A; 2進数は に変換され2Aます。

これを再度10 進数に変換すると、10 進数と同じように機能しますが、各「桁」が16の次の累乗を表すだけです。したがって、これは次のように評価されます

16 * 2 + 1 * A

または (10 進数)

16 * 2 + 1 * 10 = 42

00101010すべての 2 進数を合計することで、これが最初の 2 進数と同じ 10 進数値であることを確認できます。

 1 * 0
 2 * 1
 4 * 0
 8 * 1
16 * 0
32 * 1
64 * 0
128 * 0
于 2013-07-29T01:10:43.340 に答える