Сколько значений может быть представлено 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)

Другие вопросы по тегам