Reprezentacje liczb. Systemy liczbowe. |
W systemie liczbowych (pozycyjnych) wartość liczby zależy od pozycji, na której zapiszemy liczbę.
W systemie dziesiętnym kolejne pozycje liczb (od prawej) mają wagi odpowiadające kolejnym potęgom liczby 10, licząc od potęgi zerowej.
Np. liczba 272
liczba |
2 |
7 |
2 |
waga |
102 |
101 |
100 |
Wartość liczby na danej pozycji uzyskujemy mnożąc wagę przez liczbę, czyli 2·100+7·10+2·1. Wartość pierwszej liczby 2 (od prawej) jest różna od wartości drugiej liczby 2. W systemie dziesiętnym do zapisu liczb używamy cyfr 0,1,2,3,4,5,6,7,8,9, w binarnym 0 i 1
1. Zamiana liczb całkowitych z systemu dziesiętnego (decymalnego) na dwójkowy (binarny) i z binarnego na dziesiętny
A. Zamiana: dziesiętny na binarny
gdzie n - ilość bitów do przedstawienia liczby
a) Liczby nieujemne - Metoda 1.
Dzielimy liczbę przez 2 z resztą. Resztę zapisujemy obok, wynik dzielenia pod dzielną, liczbę odczytujemy od dołu np.
29 |
: |
2 |
| |
1 |
14 |
: |
2 |
| |
0 |
7 |
: |
2 |
| |
1 |
3 |
: |
2 |
| |
1 |
1 |
: |
1 |
| |
1 |
Dziesiętne 29 = Binarne 00011101
Liczby nieujemne - Metoda 2.
Z liczby staramy się wyłączyć możliwie największą potęgę liczby 2, następnie od liczby odejmujemy tą potęgę i staramy się wyłączyć kolejną (mniejszą). Np.
Największą potęgą liczby 2 jaką da się wyłączyć z 29 jest 24 czyli 16.
24 |
23 |
22 |
21 |
20 |
1 |
1 |
1 |
0 |
1 |
29 - 16 = 15, a zatem pod 24 zapisuję 1 i sprawdzam, czy da się wyłączyć niższą potęgę, jeżeli się da - zapisuję pod nią 1 jeżeli nie 0, tak długo, aż sprawdzę wszystkie potęgi do 20.
b) Liczby ujemne
Np. wyznaczanie postaci binarnej liczby -29, zapis liczby w 1 bajcie.
wyznaczyć postać binarną wartości bezwzględnej liczby 29 - patrz a)
odwrócić bity
0 0 0 1 1 1 0 1
po odwróceniu
1 1 1 0 0 0 1 0
dodać binarną jedynkę
1 1 1 0 0 0 1 0
+ 1
_______________
1 1 1 0 0 0 1 1
B. Zamiana binarny na dziesiętny
Jeżeli pierwszy bit jest bitem znaku, to 0 oznacza liczbę dodatnią, a 1 liczbę ujemną.
a) liczby nieujemne Wpisujemy od prawej strony kolejne potęgi liczby 2, zaczynając od 20 i mnożymy przez odpowiednie cyfry z liczby binarnej. Uzyskane wyniki dodajemy.
czyli 1·24+1·23+1·22+0·21+1·20=29.
b) liczby ujemne - odwrotność metody zamiany liczby ujemnej dziesiętnej na postać binarną
odjąć binarną jedynkę
1 1 1 0 0 0 1 1
- 1
_______________
1 1 1 0 0 0 1 0
odwrócić bity
po odwróceniu
0 0 0 1 1 1 0 1
zamienić na postać dziesiętną (wg wzoru powyższego - z punktu a)).
2.Zamiana liczb rzeczywistych, niecałkowitych z systemu dziesiętnego na binarny i z binarnego na dziesiętny
A. Zamiana: dziesiętny na binarny
Kod liczb dziesiętnych wyznaczamy na podstawie:
a) liczby nieujemne, x(0,1)
Mnożymy przez 2. Część całkowita stanowi rozwinięcie binarne (zapisujemy "za kreską"), część ułamkową zapisujemy pod mnożną, np. 0,782. odczytujemy od góry.
!Pierwszy bit stanowi bit znaku, przedstawione w postaci 1 bajta
0,728 |
·2 |
| |
1 |
0,456 |
·2 |
| |
0 |
0,912 |
·2 |
| |
1 |
0,824 |
·2 |
| |
1 |
0,648 |
·2 |
| |
1 |
0,296 |
·2 |
| |
0 |
0,592 |
·2 |
| |
1 |
0,184 |
|
|
|
czyli dziesiętne 0,728 to binarne 0 1011101 (należy pamiętać, że rozwinięcie binarne będzie zaokrąglone).
b) liczby ujemne, x(-1,0)
wyznaczyć kod uzupełnieniowy wartości bezwzględnej (j.w.)
odwrócić bity 0 1 0 1 1 1 0 1
po odwróceniu
1 0 1 0 0 0 1 0
dodać binarną jedynkę na końcu
1 0 1 0 0 0 1 0
+ 1
_______________
1 0 1 0 0 0 1 1
B. Zamiana: binarny na dziesiętny
!Pierwszy bit stanowi bit znaku
a) liczby nieujemne, x(0,1) - pierwszy bit 0
dla kolejnych bitów stanowiących zapis liczby (czyli nie dla bitu znaku) od prawej strony wpisujemy kolejne, ujemne potęgi liczby dwa, od 2-1
liczba 0 1011101 to dziesiętne
1·2-1+0·2-2+0·2-3+0·2-4+0·2-5+0·2-6+0·2-6=0,7265625
różnica między 0,728 a powstałą liczbą po przeliczeniu z liczby binarnej na dziesiętną (błąd zaokrągleń)
b) liczby ujemne, x(-1,0) - pierwszy bit 1
odjąć jedynkę binarną z końca
1 0 1 0 0 0 1 1
- 1
_______________
1 0 1 0 0 0 1 0
odwrócić bity
przeliczyć na liczbę dziesiętną, tak jak liczbę dodatnią.
3. Zamiana liczb całkowitych z systemu dziesiętnego na szesnastkowy i z szesnastkowego na dziesiętny
W liczbach szesnastkowych, obok cyfr od 0 do 9 do zapisu liczb używamy również następujących cyfr:
cyfra |
wartość |
A |
10 |
A. Zamiana: dziesiętny (decymalnego) na szesnastkowy (heksadecymalny)
np. 154
a) metoda 1
zamieniamy na liczę binarną
Dziesiętne 124 = Binarne 01111001
Dzielimy liczbę binarną co cztery bity od prawej strony 0111 1100
Powstałe liczby binarne (składające się z 4 bitów), przeliczamy na liczby dziesiętne, a tym przypisujemy odpowiednie cyfry z systemu szesnastkowego
binarnie |
0111 |
1100 |
dziesiętnie |
7 |
10 |
szesnastkowo |
7 |
C |
czyli dziesiętne 124 = szesnastkowe 7C
b) metoda 2
Dzielę liczbę przez 16. Obok zapisuję resztę z dzielenia, a pod spodem część całkowitą z dzielenia.
dzielenie |
| |
reszta |
| szesnastkowo |
||
124 |
: |
16 |
| |
12 |
| C |
7 |
: |
16 |
| |
7 |
| 7 |
0 |
|
|
|
|
|
Odczytujemy liczbę od dołu. Czyli 124 dziesiętne to 7C szesnastkowe (heksadecymalne)
B. Zamiana: szesnastkowy na dziesiętny
Mnożymy liczbę szesnastkową przez kolejne potęgi liczby 16 (licząc od 160) od prawej strony i dodajemy
7 |
C |
161 |
160 |
112 |
12 |