Digital- och datorteknik - Chalmers tekniska högskola

Digital- och datorteknik
Föreläsning #2
Biträdande professor Jan Jonsson
Institutionen för data- och informationsteknik
Chalmers tekniska högskola
Talomvandling
Principer för omvandling mellan olika talsystem:
Från binärt till oktalt/hexadecimalt talsystem:
•  Gruppering av binära siffror till ny siffra (fyll på med nollor vid behov)
Från binärt/oktalt/hexadecimalt till decimalt talsystem:
•  Direkt decimal utvärdering av de olika positionernas värden
Från decimalt till binärt/oktalt/hexadecimalt talsystem:
•  Upprepad division av heltalsdel
•  Upprepad multiplikation av bråktalsdel
Avrundning efter omvandling:
För binära resultat tillämpar vi avrundning nedåt, s k trunkering:
•  Man stryker de bråksiffror som inte längre behövs
Ett talvärde N i ett positionssystem med bas r (även kallat radix) kan alltså uttryckas som:
(Ekv. 2.1)
Koefficienterna dk (k = -m, ..., n-1) representerar siffror i talsystemet. Antalet heltalssiffror är n och
antalet bråktalssiffror är m. Sifferföljden tolkas som summan N där varje siffra får en potens av basen
som vikt. Heltalsdel och bråktalsdel åtskiljs av en punkt (.) (Kommat används bara i det decimala
talsystemet). Är punkten utelämnad består talet enbart av en heltalsdel. Siffran längst till vänster dn-1
sägs vara den mest signifikanta siffran (Most Significant Digit, MSD) och siffran längst till höger d-m
den minst signifikanta siffran (Least Significant Digit , LSD).
Talomvandling
Om talsystemets bas r är mindre än 10 används de r första av de arabiska symbolerna 0-9 som
siffror. Är basen större än 10 kompletteras siffrorna 0-9 med stora bokstäver ur alfabetet med början på
bokstaven A. Detta illustreras i Tabell 2.1, där de trettiotvå första heltalen i några olika talsystem visas.
Vi kommer i denna framställning att speciellt behandla de binära och hexadecimala talsystemen.
Binärt till oktalt/hexadecimalt:
bas 2
binärt
bas 16
bas 10
bas 8
hexadecimalt oktalt
decimalt
0
0
0
0
Exempel:
1
1
1
1
10
2
2
Binära talet (101 011)2 omvandlas till 2
11
3
motsvarande 100
oktala
tal43(53)8. 43
4
101
5
5
5
110
6
6
6
111
7
7
7
1000
8
8
10
Exempel:
1001
9
9
11
1010
A
10
12
Binära talet (0100
till13
1011 1101)
B 2 omvandlas
11
C
motsvarande 1100
hexadecimala
tal12(4D)16. 14
1101
D
13
15
1110
E
14
16
1111
F
15
17
bas 2
binärt
10000
10001
10010
10011
10100
10101
10110
10111
11000
11001
11010
11011
11100
11101
11110
11111
bas 16
bas 10
hexadecimalt
decimalt
10
16
11
17
12
18
13
19
14
20
15
21
16
22
17
23
18
24
19
25
1A
26
1B
27
1C
28
1D
29
1E
30
1F
31
bas 8
oktalt
20
21
22
23
24
25
26
27
30
31
32
33
34
35
36
37
TABELL 2.1 TALVÄRDEN FÖR OLIKA TALBASER
Eftersom de arabiska siffrorna förekommer i flera positionssystem, kan man inte alltid avgöra i
vilket talsystem ett tal är kodat genom att enbart betrakta talets siffror. För att undvika missförstånd
brukar man därför innesluta talet i en parentes och ange talsystemets bas som index till parentesen.
Talomvandling
Binärt/oktalt/hexadecimalt till decimalt:Binära koder och talomvandlingar
Ett talvärde N i ett positionssystem med bas r (även kallat radix) kan alltså uttryckas som:
(Ekv. 2.1)
Koefficienterna dk (k = -m, ..., n-1) representerar siffror i talsystemet. Antalet heltalssiffror är n och
antaletExempel:
bråktalssiffror är m. Sifferföljden tolkas som summan N där varje siffra får en potens av basen
som vikt. Heltalsdel och bråktalsdel åtskiljs av en punkt (.) (Kommat används bara i det decimala
BinäraÄrtalet
(101.11)
tillenbart
bas 10
direkt
decimal
talsystemet).
punkten
utelämnad
består talet
av genom
en heltalsdel.
Siffran
längst till vänster dn-1
2 omvandlas
utvärdering
med r=2, n=3,
ger (5,75)
. och siffran längst till höger d-m
sägs vara
den mest signifikanta
siffranm=2,
(Mostvilket
Significant
Digit, 10
MSD)
den minst signifikanta siffran (Least Significant Digit , LSD).
Om
talsystemets bas r är mindre än 10 används de r första av de arabiska symbolerna 0-9 som
Exempel:
siffror. Är basen större än 10 kompletteras siffrorna 0-9 med stora bokstäver ur alfabetet med början på
Hexadecimala
talet i(2A1.F)
till första
bas 10
genom
direkt
bokstaven
A. Detta illustreras
Tabell 2.1,
där de trettiotvå
heltalen
i några
olika talsystem visas.
16 omvandlas
Vi kommer
i denna
framställning
att speciellt
behandla
de vilket
binära ger
och hexadecimala
talsystemen.
decimal
utvärdering
med
r=16, n=3,
m=1,
(673,9375)10
.
bas 2
binärt
0
bas 16
bas 10
hexadecimalt
decimalt
0
0
bas 8
oktalt
bas 2
binärt
0
10000
bas 16
bas 10
hexadecimalt
decimalt
10
16
bas 8
oktalt
20
gar
i
= 16 + 7 + 6/8 + 1/64
= (23+49/64)10 = (23,765625)10
(C5.8)16 = (N)10 = C × (10) 161+ 5 × (10) 160 + 8 × (10) 16-1
= (12)10×(16)101 + 5 × (16) 100 + 8/16
= 192
+5
+ 8/16
= (197,5)10
Talomvandling
Låt oss nu se hur vi översätter från det decimala talsystemet till ett godtyckligt talsystem. (Ekv. 2.1
ska nu gälla för talomvandlingen. Talomvandling av heltalsdelen (integer part) och bråkdelen
(fractional part) kräver olika metoder och det är därför praktiskt att skriva om ekvationen som:
N = NI + NF =
2.2
d × r + d × r + ... + d × r + d × r
Decimalt tillEkv.
binärt/oktalt/hexadecimalt:
n −1
n −1
n−2
n−2
1
1
0
0
+
d −1 × r −1 + ... + d − ( m +1) × r − ( m +1) + d − m × r − m
Det decimala talet delas upp i en heltalsdel (integer part) och en bråktalsdel
där NI betecknar heltalsdelen (integer part) och NF betecknar bråktalsdelen (fractional part).
(fractional
part) som
sedan
behandlas separat: (N)10 = (NI,NF)10
Grundläggande datorteknik
för högskolans
ingenjörsutbildningar
Algoritm för omvandling av heltalsdelen NI
Exempel 2.8 Omvandla hexadecimala talet (A8)16 till binärt tal.
Låt N vara ett heltal i en godtycklig bas där de aritmetiska operationerna är definierade. Vi vill
I
Varje hexadecimal
siffra ger direkt fyra binära siffror (Tabell 2.1)
omvandla
N
till
basen r och utför därför divisionen:
I
A 8
d0
1010 1000 NI
Ekv. 2.3
DVS: (A8)16
= A+
r= (10101000)r
2
där A betecknar kvoten och d0 betecknar resten. Av operationen framgår att d0 < r, dvs en siffra i
talsystemet med basen r. Vi fortsätter med succesiva divisioner tills kvoten är 0.
Vi ska nu se hur även bråktalsdelen kan omvandlas mellan godtyckliga talsystem.
A
d1
=B
Algoritm
för+ omvandling av bråktalsdelen NF
r
r
Låt
B NF vara
d en bråkdel i en godtycklig bas där de aritmetiska operationerna är definierade. Vi vill
= CN+F till2 basen r och utför därför multiplikationen:
omvandla
r
r
....r NF = d-1 + A’
d
Z A’ är en
där
= 0 + n ny bråkdel och d-1 är ett heltal sådant att d-1 < r.
r upprepade multiplikationer tills den nya bråkdelen antingen är 0 eller tills tillräckligt
Vir utför nu
många
medärden
nya basen bestämts.
Detbråktalssiffror
sökta uttrycket
således:
Ekv.
B’(dn dn-1 ... d1 d0)r
r A’2.4
= dN
-2 I+=
r B’ = d + C’
-3
dvs.
talvärdet
NI ges nu av siffrorna dn ... d0 i talsystemet med basen r.
...
Talomvandling
Decimalt till binärt/oktalt/hexadecimalt:
Exempel:
Decimala talet (N)10 = (211,678)10 skall omvandlas till bas 2, och avkortas
till 6 stycken bråktalssiffror. Separation av heltalsdel och bråktalsdel ger:
(NI)10 = (211)10 och (NF)10 = (0,678)10.
Omvandling av heltalsdel:
Heltalsdelen (211)10 omvandlas till bas 2 genom successiva divisioner
med 2, vilket ger (NI)2 = (11010011)2.
Omvandling av bråktalsdel:
Bråktalsdelen (0,678)10 omvandlas till bas 2 genom successiva
multiplikationer med 2, vilket ger (NF)2 = (0.101011…)2.
Resultat:
(N)10 = (211,678)10 motsvarar alltså (N)2 = (11010011.101011…)2.
Binärkodning
Begrepp vid binär kodning
begrepp
betydelse
exempel...
bit/bitar
minsta informationsenhet,
kan anta två värden
0 eller 1
bitsträng
binärt ord
sekvens av bitar
101100100001...
kodord
7
6
5
4
3
2
1
0
också ett binärt ord men
med en fastställd kodning
(betydelse)
1000001 = “A” (ASCII)
1000001 = 65 (naturligt tal)
1000001 = -127 (heltal)
ordlängd
antal bitar i ordet
nibble
ordlängden 4 bitar
0101
byte
ordlängden 8 bitar
01011100
Digital och datorteknik LV1
Binärkodning
Vad döljs i detta mönster av hexadecimala siffror?
Är det bild (jpg)?
Är det text (ASCII)?
Är det musik (mp3)?
Är det maskinkod?
Binärkodning
Betrakta dessa bitsträngar som representerar tal?
Är det positiva tal?
Är det negativa tal?
Är det heltal?
Är det bråktal?
Binärkodning
Kodning:
Tolkning av en sekvens av 1:or och 0:or som ett binärt tal är bara
ett av flera sätt att koda en sådan sekvens. Exempel på andra
sätt att koda binärt är:
• 
• 
• 
• 
• 
• 
• 
Gray-kod (reflekterande binärkod)
Excess-kod (förskjuten binärkod)
NBCD-kod (binärkodade decimaltal)
ASCII, UTF-8 (alfanumeriska koder)
Huffman-kod (komprimerande kod) – vanliga symboler får färre bitar
Paritetskod (feldetekterande kod) – fåtal redundanta bitar läggs till
Hammingkod (felrättande kod) – stor andel redundanta bitar läggs till
vandlingar
.
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
L 2.2 NBCD-
Grundläggande datorteknik för högskolans ingenjörsutbildningar
Exempel 2.16 Skriv textsträngen ”Kaffe eller te?” som en sekvens av ASCII- kodord
Ur Tabell 2.3 får vi:
Binärkodning
K=(4B)16, a=(61)16, f=(66)16, e=(65)16, ’ ’(mellanslag)=(20)16, l=(6C)16, r=(72)16, t=(74)16, ?=(3F)16
DVS: ”Kaffe eller te?” = (4B,61,66,66,65,20,65,6C,6C,65,72,20,74,65,3F)ASCII
2.4.2 Reflekterande koder (Gray-kod)
Graykod:
Reflekterande koder karakteriseras av att dom har enhetsavstånd, vilket i klartext betyder att två
För reflekterande
koder
gäller
tvåEnintilliggande
endast
intilligande kodord endast
skiljer
sig åt i enatt
position.
vanlig tillämpning ärkodord
hos så kallade
kodskivor skiljer
vridbara axlar (figur 2.1).
sig åt i påen
bitposition. Denna egenskap är viktig i vissa tillämpningar,
Exempelvis kan rattutslag på en styrstång mätas genom att en kodskiva fästs vid axeln. Då axeln
t ex förroterar
att reducera
fel i avläsning
avdåkodskivor
på roterande
axlar.
kommer också kodskivan
att att rotera och
lämna olika siffermönster
baserat på axelns
vridningsvinkel.
Ljuskällor
Detektorer
KODEN
speciella
numeriska
presentera
ne 7-bitars
FIGUR 2.1
KODSKIVA PÅ VRIDBAR AXEL
Detektorer avläser den roterande skivans position genom att vissa fält är transparenta medan andra
fält inte släpper igenom ljus från ljuskällorna. Baserat på detta bildas ett kodord där "ljus" står för en
Ställ nu upp den omvända följden av den 2-bitars Graykoden, dvs.
10 11 01 00
Komplettera alla dess kodord med 1 i den mest signifikanta positionen, vilket ger följden:
110 111 101 100
Då vi sätter samman följderna får vi den 3-bitars Graykoden:
000 001 011 010 110 111 101 100
Binärkodning
Se även Tabell 2.4, som visar upp till fyra bitars Graykod.
Graykod:
Här framgår styrkan hos
Graykoden: oavsett var
kodskivan läses av kan
felet i avläsningen inte
överstiga 1 position.
Jämför detta med vanlig
binärkod: om skivan skulle
läsas av mellan 0111 och
1000 (och därmed kunna
tolkas som 1111) skulle
felet bli hela 8 positioner.
Decimal
ordning
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
binärkod
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
2-bitars
Graykod
00
01
11
10
3-bitars
Graykod
000
001
011
010
110
111
101
100
4-bitars
Graykod
0000
0001
0011
0010
0110
0111
0101
0100
1100
1101
1111
1110
1010
1011
1001
1000
TABELL 2.4 GRAYKOD
Vi stöter på Graykod
igen
inom tal
kort,
samband
minimering
grindnät.
Graykod för
ett N-bitars
kan iomvandlas
frånmed
binärkod
med följandeav
algoritm:
Graykodens bit gN-1 är samma som binärkodens bit bN-1.
för varje n, mindre än N, men större än eller lika med 0, i sjunkande ordning,
Binärkodning
Excess-N kod:
I en excess-N-kod får man tolkningen genom att subtrahera N från
binärkodens talvärde. På så sätt kan man
justera tallinjen för att bäst
Exempel på excess 8-kod (excess 2n-1-kod, med n = 4)
passa tillämpningen, t ex för att representera negativa värden.
Analog/Digital-omvandlare, ADC
w
Givare
(Sensor)
Digital
z
y
Spänning t ex [-8V,+8V]
x
Analog
Färdig
Start
Koden decimalt: 0
1
2
3
Koden binärt: 0000 0001 0010 0011
4
0100
5
6
7
0101 0110 0111
Spänningsvärde: -8V
-4V
-3V
U = xyzw2
(Binärt kodat värde
för spänningen.)
8
9
10
11
1000 1001 1010 1011
12
13
14
1100 1101 1110
15
1111
U
-7V
-6V
-5V
-2V
-1V
0V
+1V
+2V
+3V
+4V
+5V
+6V
Man får här spänningen i volt genom att subtrahera 8 från kodordets värde (excess 8).
Lägg märke till att spänningsvärdet +8 V inte får något kodord för denna kod.
+7V
+8V
Binärkodning
Tabell
2.4
på
binärkoder.
Tabell 2.4
Exempel
på
decimala
binärkoder.
Tabell
2.4Exempel
Exempel
pådecimala
decimala
binärkoder.
NBCD-kod:
NBCD
Decimal Decimal
NBCD
Excess-3
2421Decimal
NBCD Excess-3
Excess-3
siffra
kod
siffra
kod
kod
siffra
kod
Z
Z
3 33
2 22
1 11
0 00
3 3232121010 0
3 2 Z1 0
Istället för att omvandla ett
0
decimalt tal till det binära
talsystemet kan man binärt 1
koda varje decimal siffra som 2
3
ingår i talet.
I NBCD-kod (Natural Binary 4
Coded Decimal) representeras5
6
varje decimal siffra naturligt nog
med sitt ekvivalenta tal i det 7
8
binära talsystemet.
9
Exempel:
(23) 10 = (0010 0011)NBCD
2421Excess-3
Graykod
2421- Excess-3
Excess-3Graykod
Graykod
kod
kod
3 32 21 1030 2 1 0
3 32 21 10 0
00
0000
0000
0011
0000
0011
0000
0011
0000
00000010
0010
0010
11
0001
0001
0100
0001
0100
0001
0100
0001
00010110
0110
0110
22
0010
0010
0101
0010
0101
0010
0101
0010
00100111
0111
0111
33
0011
0011
0110
0011
0110
0011
0110
0011
00110101
0101
0101
44
0100
0100
0111
0100
0111
0100
0111
0100
01000100
0100
0100
55
0101
0101
1000
0101
1000
1011
1000
1011
10111100
1100
1100
66
0110
0110
1001
0110
1001
1100
1001
1100
11001101
1101
1101
77
0111
0111
1010
0111
1010
1101
1010
1101
11011111
1111
1111
88
1000
1000
1011
1000
1011
1110
1011
1110
11101110
1110
1110
99
1001
1001
1100
1001
1100
1111
1100
1111
11111010
1010
1010
Genom att använda excess-N- och Gray-koder
kan man dessutom erhålla koder med symmetri.
TABELL 2.2 NBCDKODEN
Exempel 2.15 Det decimala talet 9756 representeras i NBCD-kod som…
(9756)10 = (1001
(
9
2.4.1
0111
7
Alfanumerisk kod
0101
5
0110)2
6)NBCD
Binärkodning
När de symboler som skall kodas inte enbart är siffror utan även bokstäver (A,B,C,...), speciella
operationssymboler (+,-,/,?,(,...) m.m. krävs en expanderad kod. Sådana koder benämns alfanumeriska
koder och bildas ofta ur numeriska koder genom att antalet bitar i kodorden utökas. För att representera
tio decimala siffror, 29 stora och små bokstäver och diverse specialtecken krävs åtminstone 7-bitars
När
det som skall kodas inte enbart är siffror, utan även bokstäver
kodord. Fram till 2007 var den i särklass mest använda alfanumeriska koden ASCII-koden (American
och
speciella
krävs enseexpanderad
ASCII
(7 bitar)
och
Standard
Code forsymboler,
Information Interchange),
Tabell 2.3 nedan.kod.
Efter detta
används
huvudsakligen
den betydligt
mer flexibla
UTF-8
(Universal
Characterkoder.
Set Transformation Format—8-bit). Speciellt är
UTF-8
(8 bitar)
är två
vanliga
sådana
de 127 första tecknen i UTF-8 identiska med ASCII-koden.
ASCII-kod:
Hex
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
ASCII
NUL
SOH
STX
ETX
EOT
ENQ
ACK
BEL
BS
HT
LF
VT
FF
CR
SO
S1
Hex ASCII Hex ASCII Hex ASCII Hex ASCII
Hex
20
10 DLE 30
0
40
@
50
21
!
11 DC1 31
1
41
A
51
22
"
12 DC2 32
2
42
B
52
23
#
13 DC3 33
3
43
C
53
24
$
14 DC4 34
4
44
D
54
25
%
15 NAK 35
5
45
E
55
26
&
16 SYN 36
6
46
F
56
27
'
17 ETB 37
7
47
G
57
28
(
18 CAN 38
8
48
H
58
29
)
19
EM
39
9
49
I
59
2A
*
1A SUB 3A
:
4A
J
5A
2B
+
1B ESC 3B
;
4B
K
5B
2C
,
1C
FS
3C
<
4C
L
5C
2D
1D
GS
3D
=
4D
M
5D
2E
.
1E
RS
3E
>
4E
N
5E
2F
/
1F
US
3F
?
4F
O
5F
TABELL 2.3 ASCII-KOD
ASCII
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
Hex
60
61
62
63
64
65
66
67
68
69
6A
6B
6C
6D
6E
6F
ASCII
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
Hex
70
71
72
73
74
75
76
77
78
79
7A
7B
7C
7D
7E
7F
ASCII
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
DEL
21