質問
この質問は、おそらく典型的なスタックフローではないかもしれませんが、私のこの小さな質問をどこで尋ねるべきかわかりません。
問題:
10進数16のバイナリ表現でビット数を見つけますか?
今、私は式を使用してこれを解決しようとしました$ 2^n = 16 rightArrow n = 4$しかし、私のモジュールで提案されている正しい答えは5です。誰もがどのように説明できますか?
いくつかの答えを読んだ後(そして、正しい答えを受け入れる前にさらに10個のミントがあります)、これはおそらく数学的式と一致する説明だと思います。
16を表すには、17のシンボル(0,16)を表す必要があります。 4.08746$しかし、nは整数である必要があるので、$ n = 5 $
解決
バイナリがどのように機能するかを考えてください:
Bit 1: Add 1
Bit 2: Add 2
Bit 3: Add 4
Bit 4: Add 8
Bit 5: Add 16
したがって、16は10000です
他のヒント
4ビットでは、数字を表すことができます 0〜15.
したがって、16を表すには5ビットが必要です。
Decimal - 16 8 4 2 1
Binary - 1 0 0 0 0
したがって、10進31までのものには、5ビットしか必要ありません。
これは古典的なフェンスポストエラーです。
ご存知のように、コンピューターは0からカウントを開始するのが好きです。
したがって、16を表すには、0、1、2、3、および4(= floor(log2(16)))が必要です。
しかし、実際に0〜4を含むには、5ビットが必要です。
所属していません StackOverflow