Сколько значений можно представить с помощью n битов? - PullRequest
40 голосов
/ 28 сентября 2010

Например, если n=9, то сколько различных значений можно представить в 9 двоичных разрядах (битах)?

Я думаю, что если я установлю каждый из этих 9 битов в 1, я будусделать максимально возможное число, которое эти 9 цифр могут представлять.Следовательно, наибольшее значение равно 1 1111 1111, что равно 511 в десятичном виде.Я делаю вывод, что, следовательно, 9 цифр двоичного числа могут представлять 511 различных значений.

Правильно ли мыслительный процесс?Если нет, может кто-нибудь объяснить, что мне не хватает?Как я могу обобщить это до n бит?

Ответы [ 7 ]

51 голосов
/ 28 сентября 2010

2 9 = 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 битов вы можете представлять 2 k значений. Их диапазон будет зависеть от используемой вами системы:

без знака: от 0 до 2 k -1
Подпись: -2 к-1 до 2 к-1 -1

10 голосов
/ 28 сентября 2010

Чего не хватает: ноль - это значение

2 голосов
/ 28 сентября 2010

Лучший способ решить эту проблему - начать с малого.

Давайте начнем с 1 бита. Который может быть либо 1, либо 0. Это 2 значения или 10 в двоичном виде.

Теперь 2 бита, которые могут быть либо 00, 01, 10 или 11 Это 4 значения, либо 100 в двоичном формате ... Смотрите шаблон?

1 голос
/ 28 сентября 2010

Что вам не хватает, так это то, какая схема кодирования используется. Существуют разные способы кодирования двоичных чисел. Посмотрите на подписанные числовые представления. Для 9 бит диапазоны и количество чисел, которые могут быть представлены, будут различаться в зависимости от используемой системы.

1 голос
/ 28 сентября 2010

Есть более простой способ думать об этом. Начните с 1 бита. Это, очевидно, может представлять 2 значения (0 или 1). Что происходит, когда мы добавляем немного? Теперь мы можем представить вдвое больше значений: значения, которые мы могли бы представить раньше с добавлением 0, и значения, которые мы могли бы представить ранее с добавлением 1.

Таким образом, число значений, которые мы можем представить с помощью n битов, составляет всего 2 ^ n (от 2 до степени n)

1 голос
/ 28 сентября 2010

Не желая дать вам ответ, вот логика.

У вас есть 2 возможных значения в каждой цифре. у вас их 9.

как в базе 10, где у вас есть 10 различных значений по цифрам, скажем, у вас есть 2 из них (что составляет от 0 до 99): от 0 до 99 составляет 100 чисел. если вы делаете исчисление, у вас есть экспоненциальная функция

base^numberOfDigits:
10^2 = 100 ;
2^9 = 512
1 голос
/ 28 сентября 2010

Хорошо, так как он уже «просочился»: вам не хватает нуля, поэтому правильный ответ - 512 (511 - самый большой, но это от 0 до 511, а не от 1 до 511).* Между прочим, хорошим последующим упражнением было бы обобщить это:

How many different values can be represented in n binary digits (bits)?
...