11 Talsystem
Positionssystem. Ända sedan romarrikets fall har positionssystemet använts för att beskriva tal. Man har en begränsad mängd siffror vars värde dels beror på vilken siffra det är, dels vilken position i talet det har.
Exempel på positionssystem: Det decimala talsystemet med tio siffror (0, 1, 2, 3, 4, 5, 6, 7, 8, 9).
Exempel på talsystem som inte är ett positionssystem:
Det romerska talsystemet (I, V, X, L, C, D, M, ...).
Talsystem
Positionssystemet gör det enkelt att utföra aritmetik som addition och subtraktion på tal. Siffrorna på varje position adderas för sig och bara om summan blir större än värdet på siffran med högst värde påverkar det närmast högre siffer- position.
Exempel: 1234 1 + 18
1252
Det decimala talsystemet
Tio siffror: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Basen 10
En siffra som står till vänster om en annan har ett värde som är tio gånger mer.
Enkelt med aritmetik 1
Exempel: 1234 + 18
1252
Exempel:222 = 2 100 + 2 10 + 2 = 2 102+ 2 101+ 2 100
Det oktala talsystemet
Åtta siffror: 0, 1, 2, 3, 4, 5, 6, 7
Basen 8
En siffra som står till vänster om en annan har ett värde som är åtta gånger mer.
Enkelt med aritmetik 1
Exempel: 12348
+ 158 12518
Exempel:2228= 2 82+ 2 81+ 2 80 = 14610
Vanliga talsystem
0,1,2,3,4,5,6,7,8,9 0,1,2,3,4,5,6,7 0,1
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 10
8 2 16 Decimala Oktala Binära Hexadecimala
Siffror Bas Talsystem
Det binära talsystemet
Två siffror: 0, 1
Basen 2
En siffra som står till vänster om en annan har ett värde som är två gånger mer.
Enkelt med aritmetik 111
Exempel: 10102
+ 1112 100012
Exempel:1012= 1 22+ 0 21+ 1 20 = 510
22 Det binära talsystemet
De tjugo första heltalen i decimal och binär representation.
1010 1011 1100 1101 1110 1111 10000 10001 10010 10011 10
11 12 13 14 15 16 17 18 19
Binärt Decimalt 0
1 10 11 100 101 110 111 1000 1001 0
1 2 3 4 5 6 7 8 9
Binärt Decimalt
Det binära talsystemet Fler exempel:
1102= 1 22+ 1 21+ 0 20= 1 4 + 1 2 = 610
101012= 1 24+ 0 23+ 1 22+ 0 21+ 1 20= 1 16 + 1 4 + 1 = 2110
11112= 1 23+ 1 22+ 1 21+ 1 20= 8 + 4 + 2 + 1 = 1510 111102= 1 24+ 1 23+ 1 22+ 1 21= 16 + 8 + 4 + 2 = 3010 1111002 = 1 25+ 1 24+ 1 23+ 1 22= 32 + 16 + 8 + 4 = 6010
1 1 1 1 1 0 0 1
256 64 32 16 8 4 2 1 7 6 5 4 3 2 1 0 binärt tal
bitposition
vikter 100111112= 25610+ 1610+ 810+ 410+ 210+ 110= 28710
Det hexadecimala talsystemet
16 ”siffror”: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Basen 16
En siffra som står till vänster om en annan har ett värde som är 16 gånger mer.
Enkelt med aritmetik
Exempel: 123416
+ 1816 124C16
Exempel:D7B16= 13 162+ 7 161+ 11 160 = 345110
Det hexadecimala talsystemet
0 1 2 3 4 5 6 7 0000 0001 0010 0011 0100 0101 0110 0111 0 1 2 3 4 5 6 7
Hexadeci malt Binärt Decimalt
8 9 A B C D E F 1000 1001 1010 1011 1100 1101 1110 1111 8 9 10 11 12 13 14 15
Hexadeci malt Binärt Decimalt
Omvandling mellan talsystem
Det är alltså enkelt att ta reda på det decimala värdet av ett givet tal i ett annat talsystem. Men hur gör man för att göra det omvända: föra över ett decimalt tal i ett annat talsystem.
Exempel: 2228= 2 82+ 2 81+ 2 80= 14610
Men hur gör vi för att göra det omvända: 14610= 2228 ? Ledning:2228= 2 82+ 2 81+ 2 80=
(2 8 + 2) 8 + 2 = 14610
Omvandling mellan talsystem Divisionsalgoritmen: För varje par av positiva heltal taloch basfinns två unika heltal q(kvoten) och r (resten) sådana att
tal= q bas+ r och 0 ≤ r≤ bas- 1 Divisionsalgoritmen beskriver det man brukar kalla för heltalsdivision:
q= tal/bas(heltalsdivision) r= tal mod bas= tal -q bas Exempel: 146tal q bas r10= (2 8 + 2) 8 + 2
33 Omvandling mellan talsystem
Hur omvandlar man ett decimalt tal till ett annat talsystem? Jo, genom att tillämpa divisionsalgoritmen om och om igen.
Exempel: Omvandla 14610till basen 8.
2 - 0·8 = 2 2/8 = 0
2
18 - 2·8 = 2 18/8 = 2
18
146 - 18·8 = 2 146/8 = 18
146
r = tal – q·bas q = tal/bas
tal
Svaret syns i sista kolumnen. Läs nerifrån och upp! 2228
Omvandling mellan talsystem Exempel: Omvandla 2110till basen 2.
5 - 2·2 = 1 5/2 = 2
5
2 - 1·2 = 0 2/2 = 1
2
1 - 0·2 = 1 1/2 = 0
1
10 - 5·2 = 0 10/2 = 5
10
21 - 10·2 = 1 21/2 = 10
21
r = tal – q·bas q = tal/bas
tal
Svaret syns i sista kolumnen. Läs nerifrån och upp! 101012
Omvandling mellan talsystem Exempel: Omvandla 345110till basen 16.
13 - 0·16 = 1310= D 13/16 = 0
13
215 -13·16 = 7 215/16 = 13
215
3451 - 215·16 = 1110 = B 3451/16 = 215
3451
r = tal – q·bas q = tal/bas
tal
Svaret syns i sista kolumnen. Läs nerifrån och upp! D7B16
Ur tabellen får vi också att 21510= D716.
Omvandling mellan talsystem
Låt oss göra en funktion som omvandlar ett decimaltal tal till ett annat talsystem med basen bas. Kalla funktionen
convert(tal, bas).
Funktionen ska returnera en sträng med det omvandlade talet.
Som vi sett tidigare kan funktionen definieras rekursivt:
convert(tal, bas) = ”” , om tal= 0
convert(tal, bas) = convert(q, bas) +r , om tal≠ 0
{
där, som tidigare, q= tal/basoch r = tal-q bas. Dår≥ 10 får man tänka på att ersätta rmed lämplig symbol.
Omvandling mellan talsystem
Hur omvandlar man ett tal från ett godtyckligt talsystem till ett annat?
bas1 bas2
10 Svar: Omvandla först
till det decimala tal- systemet.
Omvandling mellan talsystem
Om bägge baserna är tvåpotenser går det snabbare att först omvandla till basen 2.
bas1=2n1 bas2=2n2
2