Określ zakres przedstawienie liczb całkowitych (dziesiętnych) bez znaku w formacie 6- bitowym.
To będzie 25 , czy 25 - 1?
Określ zakres przedstawienie liczb całkowitych (dziesiętnych) bez znaku w formacie 6- bitowym.
To będzie 25 , czy 25 - 1?
Czemu akurat do potęgi 5?
bo na 6 bitach liczba ma być zapisana, a 6bit to 2^5
Ani jedno ani drugie.
26
Czemu?
Na 1 bicie możesz zapisać 2 liczby (0 oraz 1) więc 21
Na 2 bitach możesz zapisać 2 razy więcej niż niż na 1 bicie więc 21 * 2 = 22
...
Na i
bitach możesz zapisać 2i róznych liczb.
Wiesz że dzwonią, ale nie wiesz w którym kościele... to magiczne -1
jest stosowane do podania największej liczby możliwej do przedstawienia za pomocą n
bitów. Taka liczba to 2n-1
Dla liczb całkowitych bez znaku 0..63
.
Dla liczb ze znakiem przy kodowaniu uzupełnieniowym do dwóch -32..31
Najprościej to sobie wyobrazić tak:
Największą liczbą binarną którą można zapisać na sześciu bitach jest 111111
. Ile to dziesiętnie?
A jeśli mam określić zakres reprezentacji liczb całkowitych (dziesiętnych) w kodzie U2 w formacie 9-bitowym to mam:
-28 ...... 28 - 1
-256 .... 255
Tutaj już od potęgi jest odjęta 1, dlaczego ?
Bo 0.
Bo jak masz 256 możliwych kombinacji, to w grę wchodzi zakres 0..255, albo 1..256, albo 2..257, albo -128..127, albo...
na 8 bitach zapisać można 256 różnych liczb. jeśli pierwszą ma być 0, to ostatnia wychodzi 255.
kod U2 ma to do siebie, że zakres ujemnych jest o 1 większy niż dodatnich. nie da się podzielić równo, bo zero jest jedno.
bity | zakres unsigned | zakres signed U2 |
---|---|---|
1 | 0..1 | |
2 | 0..3 | -2..1 |
3 | 0..7 | -4..3 |
4 | 0..15 | -8..7 |
5 | 0..31 | -16..15 |
6 | 0..63 | -32..31 |
7 | 0..127 | -64..63 |
8 | 0..255 | -128..127 |
9 | 0..511 | -256..255 |
dlaczego zakres jest -256..255
a nie np. -255..256
to już jest konsekwencją tego jak jest zbudowana liczba w kodzie U2.
po równo się nie da - chyba że zarezerwujemy sobie tę najniższą wartość jako nieprawidłową, i ograniczymy w konkretnym zastosowaniu do -255..255.