Ile wartości można przedstawić za pomocą N bitów?

Na przykład, jeśli n=9, to ile różnych wartości można przedstawić w 9 cyfrach binarnych (bitach)?

Myślę, że jeśli ustawię każdy z tych 9 bitów na 1, uczynię najwyższą możliwą liczbę, jaką te 9 cyfry są w stanie reprezentować. Dlatego najwyższą wartością jest 1 1111 1111, która równa się 511 w układzie dziesiętnym. Wnioskuję, że w związku z tym 9 cyfr binarnych może reprezentować 511 różnych wartości.

Czy mój proces myślowy jest prawidłowy? Jeśli nie, czy ktoś mógłby mi wyjaśnić czym jestem zaginęła? Jak mogę uogólnić to na n bity?
 40
Author: NullUserException, 2010-09-28

7 answers

29 = 512 wartości, bo tyle kombinacji zer i jedynek można mieć.


To, co te wartości reprezentują, zależy jednak od używanego systemu. Jeśli jest niepodpisaną liczbą całkowitą, będziesz miał:

000000000 = 0 (min)
000000001 = 1
...
111111110 = 510
111111111 = 511 (max)

W dopełniaczu two , który jest powszechnie używany do reprezentowania liczb całkowitych w binarnych, będziesz miał:

000000000 = 0
000000001 = 1
...
011111110 = 254
011111111 = 255 (max)
100000000 = -256 (min) <- yay integer overflow
100000001 = -255
...
111111110 = -2
111111111 = -1

Ogólnie rzecz biorąc, z K bitami można reprezentować 2 K wartości. Ich zasięg będzie zależeć od systemu, który używają:

Unsigned: 0 to 2 k -1
Podpisane: -2k-1 do 2 k-1-1

 50
Author: NullUserException,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-28 02:58:10

Czego ci brakuje: Zero to wartość

 10
Author: SamStephens,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-28 01:27:58

Lepszym sposobem na rozwiązanie tego problemu jest zacząć od małego.

Zacznijmy od 1 bitu. Które mogą być 1 LUB 0. To 2 wartości, lub 10 w binarnym.

Teraz 2 bity, które mogą być 00, 01, 10 lub {[6] }to 4 wartości, lub 100 w binarnym... Widzisz wzór?

 2
Author: Randy the Dev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-28 01:33:51

Dobra, skoro już "wyciekło": brakuje Ci zera, więc prawidłowa odpowiedź to 512 (511 jest największa, ale to od 0 do 511, a nie od 1 do 511).

Przy okazji, dobrym ćwiczeniem byłoby uogólnienie tego:

How many different values can be represented in n binary digits (bits)?
 1
Author: schnaader,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-28 01:29:32

Bez chęci udzielenia Ci odpowiedzi tutaj jest logika.

Masz 2 Możliwe wartości w każdej cyfrze. masz ich 9.

Jak w bazie 10, gdzie masz 10 różnych wartości według cyfr, powiedzmy, że masz ich 2 (co daje od 0 do 99) : 0 do 99 daje 100 liczb. jeśli wykonasz obliczenia, masz funkcję wykładniczą

base^numberOfDigits:
10^2 = 100 ;
2^9 = 512
 1
Author: pastjean,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-28 01:30:49

Jest łatwiej o tym pomyśleć. Zacznij od 1 bitu. Może to oczywiście reprezentować 2 wartości (0 LUB 1). Co się stanie, gdy dodamy trochę? Możemy teraz reprezentować dwa razy więcej wartości: wartości, które możemy reprezentować przed z dołączonym 0 i wartości, które możemy reprezentować przed z dołączonym 1.

Więc liczba wartości, które możemy reprezentować n bitami, wynosi tylko 2^n (2 do potęgi n)

 1
Author: dave,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-28 01:32:10

Brakuje Ci tylko tego, który schemat kodowania jest używany. Istnieją różne sposoby kodowania liczb binarnych. Przyjrzyj się podpisanym numerom. Dla 9 bitów zakresy i ilość liczb, które mogą być reprezentowane, będą się różnić w zależności od używanego systemu.

 1
Author: James Kastrantas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-28 01:57:36