0

なぜこれは00001ではなく10010を返すのですか?

0110 >> 2 // 10010

ビットが2回右にシフトすると思いましたが、そうではありません。期待した出力は0001または1でしたが、代わりに0を取得しました。どうしてこれなの?

4

2 に答える 2

2

0110 はゼロで始まるため、 8 進定数です。

>>> 0110
72
>>> 0110 >> 2
18
>>> bin(_)
'0b10010'

これは Python ですが、8 進定数を持つ他の多くの言語 (Java、C、JavaScript など) でも同じことが言えます。すべての言語がバイナリ定数を提供しているわけではありません。それらがない場合は、代わりに 16 進数の定数を使用できます (たとえば、0b0110 は 0x6 です)。

于 2013-02-17T02:14:47.830 に答える
1

数値は 2 進数ではなく、8 進数(基数 8) として解釈されます。8進数01107210 進数または10010002 進数です。右に 2 シフトすると、10010ご覧のとおりになります。

先行ゼロが 8 進数を意味することは、プログラミング言語では一般的です。使用している言語によっては、バイナリ リテラルを指定する方法がある場合とない場合があります。

各ニブル (16 進数) は正確に 4 ビットであるため、2 進数を表すより一般的な方法は 16 進数を使用することです。

0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
A 1010
B 1011
C 1100
D 1101
E 1110
F 1111

したがって、0110 (バイナリ) を作成するには、0x6 を使用します。01101101 を作成するには、0x6D を使用します。

于 2013-02-17T02:13:43.637 に答える