System dwojkowy, osemkowy i szesnastkowy - teoria i przyklady
ð Podstawa programowa: I.2aW pozycyjnym systemie liczbowym wartosc kazdej cyfry zalezy od jej pozycji (miejsca) w zapisie liczby. System, ktorego uzywamy na co dzien, to system dziesietny (DEC) o podstawie 10, uzywajacy cyfr 0-9.
Liczba 3725 w systemie dziesietnym:
3725 = 3*10^3 + 7*10^2 + 2*10^1 + 5*10^0
= 3*1000 + 7*100 + 2*10 + 5*1
= 3000 + 700 + 20 + 5
= 3725
Komputer pracuje w systemie dwojkowym - uzywa tylko dwoch cyfr: 0 i 1 (odpowiadajacych stanom: wylaczony/wlaczony, brak pradu/jest prad).
Kazda cyfra dwojkowa to bit (binary digit). 8 bitow = 1 bajt (byte).
Potegi dwojki:
2^0 = 1 2^4 = 16 2^8 = 256
2^1 = 2 2^5 = 32 2^9 = 512
2^2 = 4 2^6 = 64 2^10 = 1024
2^3 = 8 2^7 = 128
Przyklad: 1101(2) = 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0
= 8 + 4 + 0 + 1
= 13(10)
Uzywa cyfr od 0 do 7. Jest wygodny, bo kazda cyfra osemkowa odpowiada dokladnie 3 bitom.
Przyklad: 375(8) = 3*8^2 + 7*8^1 + 5*8^0
= 3*64 + 7*8 + 5*1
= 192 + 56 + 5
= 253(10)
Odpowiednik binarny (kazda cyfra OCT = 3 bity):
3 7 5
011 111 101 -> 011111101(2)
Uzywa cyfr od 0 do 9 oraz liter A=10, B=11, C=12, D=13, E=14, F=15. Kazda cyfra HEX odpowiada dokladnie 4 bitom.
Cyfry HEX: 0 1 2 3 4 5 6 7 8 9 A B C D E F
Wartosc: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Przyklad: 2AF(16) = 2*16^2 + A*16^1 + F*16^0
= 2*256 + 10*16 + 15*1
= 512 + 160 + 15
= 687(10)
Odpowiednik binarny (kazda cyfra HEX = 4 bity):
2 A F
0010 1010 1111 -> 001010101111(2)
DEC | BIN | OCT | HEX
----|--------|-----|----
0 | 0000 | 0 | 0
1 | 0001 | 1 | 1
2 | 0010 | 2 | 2
3 | 0011 | 3 | 3
4 | 0100 | 4 | 4
5 | 0101 | 5 | 5
6 | 0110 | 6 | 6
7 | 0111 | 7 | 7
8 | 1000 | 10 | 8
9 | 1001 | 11 | 9
10 | 1010 | 12 | A
11 | 1011 | 13 | B
12 | 1100 | 14 | C
13 | 1101 | 15 | D
14 | 1110 | 16 | E
15 | 1111 | 17 | F
16 | 10000 | 20 | 10
Zamien nastepujace liczby z systemu dwojkowego na dziesietny:
a) 1010(2)
b) 11001(2)
c) 101101(2)
d) 11111111(2)
a) 1010(2) = 1*8 + 0*4 + 1*2 + 0*1 = 10(10)
b) 11001(2) = 1*16 + 1*8 + 0*4 + 0*2 + 1*1 = 25(10)
c) 101101(2) = 1*32 + 0*16 + 1*8 + 1*4 + 0*2 + 1*1 = 45(10)
d) 11111111(2) = 128+64+32+16+8+4+2+1 = 255(10)
(To maksymalna wartosc 1 bajta!)
Zamien nastepujace liczby z systemu szesnastkowego na dziesietny:
a) 1A(16)
b) FF(16)
c) 3C(16)
d) B2(16)
a) 1A(16) = 1*16 + 10*1 = 16 + 10 = 26(10)
b) FF(16) = 15*16 + 15*1 = 240 + 15 = 255(10)
c) 3C(16) = 3*16 + 12*1 = 48 + 12 = 60(10)
d) B2(16) = 11*16 + 2*1 = 176 + 2 = 178(10)
Kolory w HTML/CSS zapisuje sie w formacie #RRGGBB, gdzie RR, GG, BB to wartosci szesnastkowe skladowych: czerwonej, zielonej i niebieskiej (0-255). Oblicz wartosci dziesietne skladowych dla kolorow:
a) #FF0000
b) #00FF00
c) #808080
d) #1E90FF
a) #FF0000 -> R=FF=255, G=00=0, B=00=0
Czysty czerwony (red)
b) #00FF00 -> R=00=0, G=FF=255, B=00=0
Czysty zielony (green)
c) #808080 -> R=80=128, G=80=128, B=80=128
80(16) = 8*16 + 0 = 128(10)
Szary (gray) - rowne proporcje skladowych
d) #1E90FF -> R=1E=30, G=90=144, B=FF=255
1E(16) = 1*16+14 = 30(10)
90(16) = 9*16+0 = 144(10)
FF(16) = 255(10)
Kolor niebieski (dodger blue)
Zamien nastepujace liczby z systemu osemkowego na dziesietny i dwojkowy:
a) 17(8)
b) 52(8)
c) 377(8)
a) 17(8) = 1*8 + 7*1 = 15(10)
BIN: 1->001, 7->111 => 001111(2) = 1111(2)
b) 52(8) = 5*8 + 2*1 = 42(10)
BIN: 5->101, 2->010 => 101010(2)
c) 377(8) = 3*64 + 7*8 + 7*1 = 192+56+7 = 255(10)
BIN: 3->011, 7->111, 7->111 => 011111111(2) = 11111111(2)
(Znowu 255 - maksymalna wartosc bajta!)