Talsystem Talsystem Det decimala talsystemet Det oktala

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 sifferposition.
1
Exempel:
1234
+ 18
1252
Det decimala talsystemet
Det oktala 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.
Exempel: 2228 = 2— 82 + 2— 81 + 2— 80 = 14610
Exempel: 222 = 2— 100 + 2— 10 + 2 =
2— 102 + 2— 101 + 2— 100
Enkelt med aritmetik
Exempel:
1
1234
+ 18
1252
Vanliga talsystem
Talsystem
Bas Siffror
Decimala
10
Oktala
8
Binära
2
Hexadecimala 16
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
Å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
Exempel:
1
12348
+ 158
12518
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.
Exempel: 1012 = 1— 22 + 0— 21 + 1— 20 = 510
Enkelt med aritmetik
Exempel:
111
10102
+ 1112
100012
1
Det binära talsystemet
De tjugo första heltalen i decimal och binär representation.
Decimalt
0
1
2
3
4
5
6
7
8
9
Binärt
0
1
10
11
100
101
110
111
1000
1001
Decimalt
10
11
12
13
14
15
16
17
18
19
Binärt
1010
1011
1100
1101
1110
1111
10000
10001
10010
10011
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
7
binärt tal
Exempel: D7B16 = 13— 16 + 7— 16 + 11— 16 = 345110
1
0
Enkelt med aritmetik
Exempel:
+
123416
1816
124C16
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
5
4
3
2
1
bitposition
0
1
0
0
1
1
1
1
1
256
64
32 16
8
4
2
1
vikter
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.
2
6
100111112 = 25610 + 1610 + 810 + 410 + 210 + 110 = 28710
Det hexadecimala talsystemet
Det binära talsystemet
Fler exempel:
Decimalt Binärt Hexadeci
malt
0
1
2
3
4
5
6
7
0000
0001
0010
0011
0100
0101
0110
0111
0
1
2
3
4
5
6
7
Decimalt Binärt
8
9
10
11
12
13
14
15
Hexadeci
malt
1000
1001
1010
1011
1100
1101
1110
1111
8
9
A
B
C
D
E
F
Omvandling mellan talsystem
Divisionsalgoritmen: För varje par av positiva heltal
tal och bas finns 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: 14610 = (2— 8 + 2)— 8 + 2
tal
q bas r
2
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 14610 till basen 8.
Omvandling mellan talsystem
Exempel: Omvandla 2110 till basen 2.
tal
q = tal/bas
r = tal – q·bas
21
21/2 = 10
21 - 10·2 = 1
10/2 = 5
10 - 5·2 = 0
q = tal/bas
r = tal – q·bas
10
146 146/8 = 18
146 - 18·8 = 2
5
5/2 = 2
5 - 2·2 = 1
18 - 2·8 = 2
2
2/2 = 1
2 - 1·2 = 0
2 - 0·8 = 2
1
1/2 = 0
1 - 0·2 = 1
tal
18
2
18/8 = 2
2/8 = 0
Svaret syns i sista kolumnen. Läs nerifrån och upp! 2228
Svaret syns i sista kolumnen. Läs nerifrån och upp! 101012
Omvandling mellan talsystem
Exempel: Omvandla 345110 till basen 16.
Omvandling mellan talsystem
tal
q = tal/bas
r = tal – q·bas
3451
3451/16 = 215
3451 - 215·16 = 1110 = B
215
215/16 = 13
215 -13·16 = 7
13
13/16 = 0
13 - 0·16 = 1310 = D
Svaret syns i sista kolumnen. Läs nerifrån och upp! D7B16
Ur tabellen får vi också att 21510 = D716.
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 talsystemet.
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/bas och r = tal - q— bas. Då r ≥ 10
får man tänka på att ersätta r med lämplig symbol.
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
3