Сколько значений может быть представлено n битами?
Например, если n=9
Тогда сколько разных значений можно представить в 9 двоичных разрядах (битах)?
Я думаю, что если я установлю каждый из этих 9 битов на 1, я сделаю максимально возможное число, которое эти 9 цифр могут представлять. Поэтому самое высокое значение 1 1111 1111
что равно 511
в десятичном. Я делаю вывод, что, следовательно, 9 цифр двоичного числа могут представлять 511 различных значений.
Мой мыслительный процесс правильный? Если нет, может кто-нибудь объяснить, что мне не хватает? Как я могу обобщить это n
биты?
7 ответов
29 = 512 значений, потому что именно столько комбинаций нулей и единиц вы можете иметь.
Однако то, что эти значения представляют, будет зависеть от системы, которую вы используете. Если это целое число без знака, у вас будет:
000000000 = 0 (min)
000000001 = 1
...
111111110 = 510
111111111 = 511 (max)
В дополнении к двум, которое обычно используется для представления целых чисел в двоичном виде, вы будете иметь:
000000000 = 0
000000001 = 1
...
011111110 = 254
011111111 = 255 (max)
100000000 = -256 (min) <- yay integer overflow
100000001 = -255
...
111111110 = -2
111111111 = -1
В общем, с k битами вы можете представить 2k значения. Их диапазон будет зависеть от системы, которую вы используете:
Без знака: от 0 до 2к-1
Подпись: от -2к-1 до 2к-1-1
Лучший способ решить это - начать с малого.
Давайте начнем с 1 бита. Который может быть 1
или же 0
, Это 2 значения, или 10
в двоичном
Теперь 2 бита, которые могут быть 00
, 01
, 10
или же 11
Это 4 значения, или 100
в двоичном формате... Видите шаблон?
Хорошо, так как он уже "просочился": вы пропустили ноль, поэтому правильный ответ 512
(511 самый большой, но это от 0 до 511, а не от 1 до 511).
Кстати, хорошим продолжением было бы обобщить это:
How many different values can be represented in n binary digits (bits)?
Не желая дать вам ответ, здесь есть логика.
У вас есть 2 возможных значения в каждой цифре. у вас есть 9 из них.
как в базе 10, где у вас есть 10 различных значений по цифрам, скажем, у вас есть 2 из них (что составляет от 0 до 99): от 0 до 99 составляет 100 чисел. если вы делаете исчисление у вас есть экспоненциальная функция
base^numberOfDigits:
10^2 = 100 ;
2^9 = 512
Что вам не хватает, так это то, какая схема кодирования используется. Существуют разные способы кодирования двоичных чисел. Посмотрите на подписанные числовые представления. Для 9 битов диапазоны и количество чисел, которые могут быть представлены, будут различаться в зависимости от используемой системы.
Есть более простой способ думать об этом. Начните с 1 бита. Это, очевидно, может представлять 2 значения (0 или 1). Что происходит, когда мы добавляем немного? Теперь мы можем представить вдвое больше значений: значения, которые мы могли бы представить раньше с добавлением 0, и значения, которые мы могли бы представить ранее с добавлением 1.
Таким образом, число значений, которые мы можем представить с помощью n битов, составляет всего 2^n (от 2 до степени n)