Transcript Mandag 12. januar
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
DATS/ITPE 2400: Datamaskinarkitektur og Nettverk Forelesning 3: Tallsystemer, representasjon
T. M. Jonassen Institute of Computer Science Faculty of Technology, Art and Design Oslo and Akershus University College of Applied Sciences 12. Januar 2015
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Oversikt
1
2
Tallsystemer og datarepresentasjon I
3
Binær addisjon og multiplikasjon
4
5
6
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Karnaugh-diagrammer (K-map)
Vi beskriver ofte en Boolesk funksjon f ved en tabell.
=
f
(
x
1 ,
x
2 , . . . ,
x n
) Karnaugh-diagrammer er en teknikk for ˚a oversette tabellen til et algebraisk uttrykk.
Karnaugh-diagrammer er en effektiv metode for ˚a forenkle uttrykk.
Basserer seg p ˚a expr (
x
+
x
) =
expr
· 1 =
expr
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Eksempel p ˚a et Karnaugh-diagram
f
(
w
,
x
,
y
,
z
) = X
m
( 1 , 2 , 3 , 5 , 7 , 10 , 11 , 15 )
x f
(
w
,
x
,
y
,
z
) :
y z
2 0 1 1 0 0 # Ã 1 3 # Ã 1 1 0
w
1 1 1 0 8 0 9 0 13 0 12 0
f
(
w
,
x
,
y
,
z
) =
w z
+
yz
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Definisjoner
Vi bruker følgende navn p ˚a ruter og naboruter i et Karnaugh-diagram: Implikant - Et produktledd Primimplikant - Et produktledd best ˚aende av et maksimalt antall naboruter. Antallet m ˚a være en potens av 2 Essensiell primimplikant - En primimplikant som inneholder minst en implikant som ikke er dekket av andre primimplikanter
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Metode
Finn alle primimplikanter Identifiser de essensielle primimplikantene, disse m ˚a være med Dekk eventuelle udekkede implikanter med et minimalt antall primimplikanter Merk: Siste punkt over behøver ikke ˚a være entydig, det kan finnes flere ekvivalente valg.
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Tall, representasjon og maskiner
Informasjon representeres som sekvenser av 0 og 1.
Positiv logikk: 1 - høy spenning, 0 lav spenning.
Vi m ˚a vite hvordan 01 sekvensene skal tolkes – representasjon.
Det binære systemet er viktig, men ikke særlig lesbart.
Oktal- og heksadesimal notasjon er mer kompakt.
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Grunntall (radix) og siffer 1
Eksempel: Det desimale tallet 245 .
87 tolkes som 1 245 .
87 = 2 · 100 + 4 · 10 + 5 · 1 + 8 · 10 1 + 7 · 100 som skrevet p ˚a en annen m ˚ate gir 245 .
87 = 2 · 10 2 + 4 · 10 1 + 5 · 10 0 + 8 · 10 − 1 + 7 · 10 − 2 Mer generelt, det desimale tallet T gitt ved
T
=
A n
− 1
A n
− 2 · · ·
A
1
A
0 .
A
− 1
A
− 2 · · ·
A
−
m
tolkes som
T
=
n
− 1 X
A i
· 10
i i
= −
m
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Grunntall (radix) og siffer 2
Generelt vil vi tolke et tall T i et bestemt tallsystem b (radix, basetall, grunntall) som følger. Vi skriver tallet som (
T
)
b
, alts ˚a ( siffer ) radix :
T
= (
A n
− 1
A n
− 2 · · ·
A
1
A
0 .
A
− 1
A
− 2 · · ·
A
−
m
)
b
hvor A
i
∈ { 0 , 1 , 2 , . . . ,
b
− 2 ,
b
− 1 } . Da vi vanligvis har brukt 10-tallsystemet, er det naturlig ˚a bruke dette som “standard” grunntall. Vi tolker da (
T
)
b
som
T
10 =
n
− 1 X
A i
·
b i i
= −
m
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Noen viktige tallsystemer
Desimale tall. Grunntall 10, siffer 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9.
Binære tall. Grunntall 2, siffer 0 , 1.
Oktale tall. Grunntall 8, siffer 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7.
Heksadesimale tall. Grunntall 16, Siffer 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ,
a
,
b
,
c
,
d
,
e
, f .
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Noen eksempler
Eksempel 1: Tallet S = ( 341 ) 5 er i 10-tallsystemet gitt ved
S
= 3 · 5 2 + 4 · 5 1 + 1 · 5 0 = 3 · 25 + 4 · 5 + 1 = 96 Eksempel 2: Tallet T = ( 2a ) 16 er i 10-tallsystemet gitt ved
T
= 2 · 16 1 + 10 · 16 0 = 2 · 16 + 10 = 42 Eksempel 3: Tallet U = ( 12101 ) 3 er i 10-tallsystemet gitt ved
U
= 1 · 3 4 + 2 · 3 3 + 1 · 3 2 + 0 · 3 1 + 1 · 3 0 = 81 + 54 + 9 + 1 = 145
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
En kommentar
Det er alts ˚a lett ˚a finne et tall (
T
)
b
gitt med grunntall b som et tall i 10-tallsystemet ved ˚a bruke formelen
T
10 =
n
− 1 X
A i
·
b i i
= −
m
Mer generelt har vi problemet: Gitt et tall T
b
, hvordan finner vi representasjonen i et annet tallsystem c, alts ˚a, T
c
?
Før vi ser p ˚a dette, skal vi se p ˚a noen spesialtilfeller.
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Hele desimale tall til binære tall
Faktum: 2-potenser er lett ˚a regne ut (tell eksponent p ˚a fingerne), siden det er lett ˚a multiplisere med 2.
Dette gir oss en enkel metode for ˚a gjøre om desimale heltall til binære tall.
Finn største 2 potens mindre enn tallet, regn ut differansen, og gjør det samme med denne, og fortsett til differansen er 0. Tallet er da en sum av 2-potenser, og vi vet da de binære sifferne.
Eksempel:
T
= 39 = 32 + 7 = 32 + 4 + 3 = 32 + 4 + 2 + 1 = 2 5 + 2 2 + 2 1 + 2 0 s ˚a T = ( 100111 ) 2 .
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Hele binære tall til oktale tall
Faktum: 8 = 2 3 . Dette betyr at tre binære siffer er ett oktalt siffer. Dette gir en enkel metode for ˚a konvertere et binært tall til et oktalt tall: Grupp ´er det binære heltallet i siffergrupper av tre binære siffer fra minst signifikante siffer mot mest signifikante siffer (høyre mot venstre), legg til 0-er p ˚a venstre side om nødvendig. Tolk hver tre-gruppe som et oktalt siffer.
Eksempel: Gitt det binære tallet T = ( 1011101 ) 2 Vi finner (T = 93 10 ).
T
= 1011101 2 = 001011101 2 = 001 |{z} 1 011 |{z} 3 101 |{z} 5 = ( 135 ) 8
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Hele binære tall til heksadesimale tall
Faktum: 16 = 2 4 . Dette betyr at fire binære siffer er ett heksadesimalt siffer. Alts ˚a kan vi bruke samme prinsipp som brukt for konvertering til oktale tall: Grupp ´er det binære tallet i grupper p ˚a fire og fire fra minst signifikante siffer (høyre mot venstre), og legg til 0-er p ˚a venstre side om nødvendig. Tolk hver gruppe som et heksadesimalt siffer.
Eksempel: Gitt det binære tallet T (T = 349 10 ). Vi finner = ( 101011101 ) 2
T
= 101011101 2 = 000101011101 2 = 0001 | {z } 1 0101 | {z } 5 1101 | {z }
d
= ( 15d ) 16
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Konvertering av binære tall med brøkdeler
Gitt et binært tall p ˚a form
T
=
a n
− 1
a n
− 2 · · ·
a
1
a
0 .
a
− 1
a
− 2 · · ·
a
−
m
hvor
a i
∈ { 0 , 1 } For ˚a konvertere dette tallet til et oktalt tall eller et heksadesimalt tall behandles heltallsdelen a
n
− 1
a n
− 2 · · ·
a
1
a
0 som før.
Brøkdelen a − 1
a
− 2 · · ·
a
−
m
behandles p ˚a følgende m ˚ate: Grupp ´er fra venstre mot høyre i grupper p ˚a tre siffer (oktalt) eller fire siffer (heksadesimalt). Legg til 0 p ˚a høyre side om nødvendig.
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Fra oktalt til heksadesimalt og motsatt
For ˚a konvertere fra oktalt til heksadesimalt, eller heksadesimalt til oktalt, konverterer vi først til binært, og deretter bruker metodene vi har sett p ˚a tidligere. Ett oktalt siffer blir tre binære siffer, mens ett heksadesimalt siffer blir fire binære siffer.
Eksempel: Gitt tallet T = 4317 8 . Dette skal konverteres til et heksadesimalt tall. Konverterer til binærtall, og f ˚ar
T
= 4317 8 = ( 100 011 001 111 ) 2 Metoden vi har sett p ˚a tidligere gir da
T
= 100011001111 2 = 1000 | {z } 8 1100 | {z }
c
1111 | {z }
f
= 8cf 16 Derfor er
T
= 4317 8 = 8cf 16
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
En generell metode for omregning
For ˚a konvertere mellom to tallsystemer med radix c og b holder det ˚apenbart ˚a kunne konvertere fra 10-tallsystemet til et vilk ˚arlig tallsystem med radix b. Dette fordi formelen
T
10 =
n
− 1 X
C i
·
c i i
= −
m
konverterer T = (
C n
− 1
C n
− 2 · · ·
C
1
C
0 .
C
− 1
C
− 2 · · ·
C
−
m
)
c
10-tallsystemet T =
T
integer .
T
fraction .
Vi deler problemet i to: til Heltallsdelen T integer .
Brøkdelen T fraction .
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Heltallsdelen
Vi skal konvertere heltallet T =
T
integer b-tallsystemet.
La T = (
A n
− 1
A n
− 2 · · ·
A
1
A
0 )
b
. Da er gitt i 10-tallsystemet til
T
=
n
− 1 X
A i b i i
= 0 Divisjon av T med b gir
T
/
b
= (
n
− 1 X
A i b i
) ·
b
− 1
i
= 0 =
n
− 1 X
A i b i
− 1 =
n
− 1 X
A i b i
− 1 +
A
0
b i
= 0
i
= 1 Tallet T siden 0 1 = ≤
A
P 0
n
− 1
i
= 1 ≤
b A
−
i b i
− 1 er et heltall, mens A 1. Vi finner derfor A 0 0 / b er en kvosient . Denne prossessen fortsettes p ˚a heltalsdelene inntil denne er 0. Vi har da funnet alle sifferene A 0 ,
A
1 , . . . ,
A n
− 1 .
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Et eksempel
Vi skal finner T = 241 10 i 5-tallsystemet. Metoden v ˚ar gir: 241 : 5 = 48 + 1 5 = ⇒
A
0 = 1 48 : 5 = 9 + 3 5 = ⇒
A
1 = 3 9 : 5 = 1 + 4 5 = ⇒
A
2 = 4 1 : 5 = 0 + 1 5 = ⇒
A
3 = 1 Derfor er T = 241 10 = 1431 5 .
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Brøkdelen
Vi skal konvertere brøkdelen T fraction ≈ T gitt i 10-tallsystemet til b-tallsystemet (tilnærmet lik fordi desimalutviklingen i b-tallsystemet kan være en uendelig periodisk brøk). La
T
= (
A
− 1
A
− 2 · · ·
A
−
m
)
b
. Multiplikasjon med b gir:
T
·
b
=
b
− 1 X
i
= −
m A i b i
= − 1 X
i
= −
m A i b i
+ 1 =
A
− 1 + − 2 X
A i b i
+ 1
i
= −
m
Her er A 1 P − 2
i
= −
m A i
et ikke negativt heltall da 0
b i
+ 1 ≤
A i
≤
b
− 1, mens er en ny brøkdel. Vi forsetter prossessen p ˚a de nye brøkdelene til alle A
i
, i = − 1 , − 2 , . . . , − m er funnet.
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Et eksempel (del 1)
Vi vil finne er tilnærming av T fraction Metoden v ˚ar gir: = 0 .
721 10 i 3-tallsystemet.
0 .
721 · 3 = 2 + 0 .
163 = ⇒
A
− 1 = 2 0 .
163 · 3 = 0 + 0 .
489 = ⇒
A
− 2 = 0 0 .
489 · 3 = 1 + 0 .
467 = ⇒
A
− 3 = 1 Fortsetter neste slide.....
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Et eksempel (del 2)
....fortsettelse, siste brøkdel var 0 .
467 0 .
467 · 3 = 1 + 0 .
401 = ⇒
A
− 4 = 1 0 .
401 · 3 = 1 + 0 .
203 = ⇒
A
− 5 = 1 0 .
203 · 3 = 0 + 0 .
609 = ⇒
A
− 6 = 0 Vi konkluderer med at 0 .
721 10 ≈ 0 .
201110 3 .
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Binær addisjon 1
Addisjon av binære tall (eller addisjon i et annet tallsystem) gjøres p ˚a samme m ˚ate som vi er vant med fra grunnskolen, men vi m ˚a huske p ˚a at addsjonstabellene ser anderledes ut.
Eksempel: Vi har følgende addsjonstabeller for binærsystemet og 3-tallsystemet: + 0 1 0 0 1 1 1 10 + 0 1 2 0 0 1 2 1 1 2 10 2 2 10 11
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Binær addisjon 2
Eksempel: Vi skal addere de to tallene T
U
= ( 110 ) 10 binært. Vi finner at 93 = 64 = ( 93 ) 10 + 16 + 8 og + 4 + 1 og 110 = 64 + 32 + 8 + 4 + 2, og derfor ( 93 ) 10 = ( 1011101 ) 2 og ( 110 ) 10 = ( 1101110 ) 2 . Vi adderer p ˚a vanlig m ˚ate, hvor øverste linje under viser mente: + 1 1 1 1 1 1 0 1 0 1 1 0 0 1 1 1 1 1 1 0 0 1 1 1 0 1 Vi ser da at T +
U
= ( 11001011 ) 2 = ( 203 ) 10 .
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Binær multiplikasjon 1
Multiplikasjon av binære tall (eller multplikasjon i et annet tallsystem) gjøres p ˚a samme m ˚ate som vi er vant med fra grunnskolen, men vi m ˚a huske p ˚a at multiplikasjontabellene ser anderledes ut.
Eksempel: Vi har følgende multiplikasjonstabeller for binærsystemet og 3-tallsystemet: × 0 1 0 0 0 1 0 1 × 0 1 2 0 0 0 0 1 0 1 2 2 0 2 11
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Binær multiplikasjon 2
Det (lille) binære multiplikasjonstabellen er spesielt enkel. Dette reduserer multiplikasjon stort sett til ˚a utføre addisjon av binære tall. Vi skal utføre multiplikasjonen T
U T
× U, hvor T = ( 27 ) 10 = ( 6 ) 10 . Siden 27 = ( 11011 ) 2 og U = 16 + 8 + 2 + 1 og 6 = 4 + 2 f ˚ar vi = ( 110 ) 2 . Vanlig multiplikasjon gir da: og 1 1 1 0 1 1 1 1 1 1 0 1 0 0 1 1 0 0 1 0 0 0 1 1 0 1 0 1 1 1 0 0 × 1 1 0 Vi ser da at T ×
U
= ( 10100010 ) 2 = ( 162 ) 10 .
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Binær multiplikasjon 3
Det fins noen tall som er spesielt enkle ˚a multiplisere binært.
Vi legger merke til at T × 2 vil være et bitshift mot venstre, hvor den “tomme plassen” p ˚a høyre side erstattes av en 0.
Eksempel: Vi finner 101011101 × 10 = 1010111010 Mer generelt vil T × 2
n
, n ≥ 0, være n bitshift mot venstre, hvor “de tomme plassene” p ˚a høyre side fylles opp med 0-er.
Eksempel: Vi finner (T × 32 =
T
× 2 5 ) 101011101 × 100000 = 10101110100000 Vi skal se at dette kan gi merklige resultater.
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Signed magnitude
Signed magnitude er en representasjon hvor ett bit (det mest signifikante) brukes til fortegn, 0 for + og 1 for − 1. De andre bitene brukes til størrelsen av tallet T , alts ˚a |
T
| .
For et n-bits tall
T
=
b n
− 1
b n
− 2 · · ·
b
2
b
1
b
0 brukes b
n
− 1 til fortegn, mens b
n
− 2 · · ·
b
2
b
1
b
0 tolkes som et ikke-negativt binært tall.
Hvis vi har n bits til r ˚adighet, har vi 2
n
bare representere 2
n
− muligheter, men vi kan 1 forskjellige tall siden 0 vil ha to representasjoner, ± 0 = 0.
Eksempel: Bitmønsteret 01101 representerer tallet 13 10 , mens 10011 representerer tallet − 3 10 .
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
1-er komplement
Vi kan tenke p ˚a 1-er komplement b ˚ade som en operasjon, og som en represtasjon.
Operasjonen: Gitt en bit-sekvens b
n
− 1
b n
− 2 · · ·
b
2
b
1
b
0 . Da er 1-er komplementet av denne sekvensen den sekvensen vi opn ˚ar ved ˚a bytte ut alle 1-er med 0-er, og alle 0-er med 1-ere.
Eksempel: 1-er komplementet av 00110101 er 11001010.
Representasjon: Vi ser p ˚a n bit. Mest signifikante bit representerer fortegn, 0 for + , 1 for − . Vi representerer 2
n
− 1 vanlige binære tall, talt fra 0 og opp til 2
n
− 1 − 1. Vi oppn ˚ar de tilsvarende negative tallene ved ˚a ta 1-er komplementet av det tilsvarende positive tallet av samme størrelse. Vi kan representere 2
n
− 1 forskjellige tall siden 0 har to representasjoner.
Eksempel: 4 10 − 4 10 ∼ 111011.
∼ 000100 som gir ved ˚a ta 1-er komplement at
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
2-er komplement
Vi kan tenke p ˚a 2-er komplement b ˚ade som en operasjon, og som en represtasjon.
Operasjonen: Gitt en bit-sekvens b
n
− 1
b n
− 2 · · ·
b
2
b
1
b
0 . Da f ˚ar vi 2-er komplementet av denne sekvensen ved først ˚a ta 1-er komplementet og deretter addere 1. Eventuelt mente p ˚a mest signifikante bit kastes.
Representasjon: Vi ser p ˚a n bit. Mest signifikante bit representerer fortegn, 0 for + , 1 for − . Vi representerer 2
n
− 1 vanlige binære tall, talt fra 0 og opp til 2
n
− 1 − 1. Vi oppn ˚ar de tilsvarende negative tallene ved ˚a ta 2-er komplementet av det tilsvarende positive tallet av samme størrelse. Merk at 0 bare har en representasjon.
2-er komplementet er svært viktig i forbindelse med aritmetikk, og vi kommer tilbake til denne senere.
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Excess representasjon
I excess-representasjonen behandles et tall som fortegnsløst men det flyttes i verdi ved ˚a subtrahere en “bias” (som m ˚a være kjent).
Hvis vi har n bits vil sekvensen av bare 0-er være det negasjonen av “bias”, og det minste tallet vi kan representere, mens sekvensen av bare 1 vil være det største.
Eksempel: Excess-4 med tre bits (bias = 4): Desimalt: − 4 , − 3 , − 2 , − 1 , 0 , 1 , 2 , 3 Excess-4: 000 , 001 , 010 , 011 , 100 , 101 , 110 , 111 Brukes i forbindelse med flyttall.
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Om flyttall 1
Vi skal komme tilbake til flyttall senere, s ˚a vi ser bare p ˚a noen f ˚a detaljer n ˚a.
Flyttalls representasjonen kan karakteriseres ved at man skiller bit som representerer presisjon fra de bit som representerer størrelse.
Eksempel: Tallet 2 .
034 × 10 18 kan representeres ved at man har presisjonsdelen (2 .
034) som en del, og størrelsesdelen 10 18 , da representert ved eksponenten 18 som en annen del. (I tillegg kommer naturligvis fortegn).
Vi karakteriserer flyttallsrepresentasjonen ved tre deler: fortegn, eksponent og mantisse (mantisse kalles ogs ˚a signifikant).
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Om flyttall 2
Vi skal innføre noen begreper: normalisert flyttall og skjult 1-er.
Normalisert flyttall: Det er mange m ˚ater ˚a skrive tallet
T
=
M
× 10
n
p ˚a, siden M =
M i
.
M f
, ved ˚a flytte “komma” og justere eksponenten.
Eksempel:
1901 .
1 × 10 0 = 190 .
11 × 10 1 = 19 .
011 × 10 2 = 1 .
9011 × 10 3 = 0 .
19011 × 10 4 Den normaliserte formen er formen uten heltallsdel, men første siffer etter “komma” er forskjellig fra 0.
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Om flyttall 3
skjult 1-er: Hvis mantissen (signifikanten) representeres binært, (base tallet for eksponent delen er da naturligvis 2) s ˚a vil det mest signifikantet bit-et i det normaliserte flyttallet alltid være 1. Det er derfor unødvendig ˚a lagre dette, men kun ta hensyn til at det fins, ved operasjoner p ˚a tallet. P ˚a denne m ˚aten f ˚ar vi ett ekstra bit til presisjon.
Eksempel: Hvis mantissen p ˚a normalisert form er .
10110 lagres bit-mønsteret 0110.
Se læreboken for flere detaljer, spesielt om IEEE 754 standarden.
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
ASCII
ASCII (American Standard Code for Information Interchange) koden var opprinnlig en 7-bits kode.
Se tabell i læreboken.
Tall kommer i rekkefølge, tilsvarende bokstavene (sm ˚a) kommer i rekkefølge, og ogs ˚a de store bokstavene.
Problemer med spesialbokstaver som æ,ø, ˚a.
Kan løses med 8-bits ASCII.
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
EBCDIC
EBCDIC (Extended Binary Coded Decimal Interchange Code) er en 8-bits kode.
Se tabell i læreboken.
Brukt i IBM mainframe maskiner.
Tall kommer i rekkefølge, men ikke bokstavene, hvor det er “gap”.
Løser problemet med spesialtegn.
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Unicode
Unicode er en 16-bits kode innført for ˚a løse problemet med mange alfabeter.
Unicode har 65536, men det er ikke nok, s ˚a denne er en delmengde av en 32-bits standard kalt Universal Character Set.
Merk at de 127 første tegn i Unicode er de samme som i ASCII.
Se tabell i læreboken.
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Iterative systemer 1
La I ⊂ R være et lukket intervall, for eksempel I = [ 0 , 1 ] , og la
f
:
I
−→
I
hvor
f
(
I
) ⊆
I
være en kontinuelig funksjon.
Dette gir at hvis x
f
2 (
x
) =
f
◦
f
(
x
) = ∈ I s ˚a vil f (
x
) ∈ I. Vi bruker notasjonen
f
(
f
(
x
)) , og tilsvarende for n sammensetninger av f med seg selv (iterasjon). Siden f avbilder I inn i seg selv vil
O f
(
x
) = {
f n
(
x
) } ∞
n
= 0 ⊂ I for et hvert x ∈ I. Vi kaller O banen til x til det iterative systemet gitt ved f .
f
(
x
) for Hvis f (
x
0 ) =
x
0 s ˚a kaller vi x
f
for et stasjonært punkt. Det kan vises at om f er deriverbar i en omegn om x 0 , s ˚a er x 0 “attraktivt” hvis |
f
′ (
x
0 ) | < 1 og “frastøtende” om |
f
′ (
x
0 ) | Dette betyr at baner med startpunkt nær et “attraktivt” > 1.
stasjonært punkt vil konvergere mot dette, mens baner nær et
“frastøtende” stasjonært punkt vil fjerne seg.
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Iterative systemer 2
Iterative systemer p ˚a en intervall I ⊂ R ved en funksjon f er egnet for datamaskinsimulering, men det hender at simulering kan lede til helt gale resultater.
Vi definerer f =
f
(
x
) som følger:
f
(
x
) = ½ 2x 2 − 2x if if 0 1 / ≤ 2
x
< ≤ 1 / 2
x
≤ 1 Det er lett ˚a se at f ([ 0 , 1 ]) = [ 0 , 1 ] og at f ( 0 ) = 0 med f ′ ( 0 ) = 2, alts ˚a er x = 0 et “frastøtende” stasjonært punkt. Vi skal bruke Mathematica til ˚a simulere dette systemet.
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Noen Mathematica funksjoner 1
Vi definerer en ny funksjon f ved f[x ]:=expr If[test,expr1,expr2] returnerer sann, expr2 ellers.
expr1 hvis test er Funksjonen RandomReal[ ] returnerer et uniformt distribuert vilk ˚arlig tall i intervallet [ 0 , 1 ] .
Funksjonen NestList[g,x,n] returnerer en liste av de n første punktene under iterasjon av x ved g.
Funksjonen Drop[list,m] returnerer en liste hvor de m første elementene i list er fjernet.
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Noen Mathematica funksjoner 2
Følgende definerer funksjonen vi skal iterere:
tent @ x_ D : = If @ x £ 1 2, 2 x, 2 2 x D ;
Test av RandomReal :
Table @ RandomReal @D , 8 5
8 0.832671, 0.762535, 0.504678, 0.310622, 0.784664
< Dette illusterer NestList :
NestList @ g, Ξ , 4 D
8 Ξ , g @ Ξ D , g @ g @ Ξ DD , g @ g @ g @ Ξ DDD , g @ g @ g @ g @ Ξ DDDD< Dette illusterer Drop :
Drop @8 1, 2, 3, 4, 5, 6 < , 3 D
8 4, 5, 6 <
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Grafen til
tent
og f
(
x
) =
x
f H x L 1.0
0.8
0.6
0.4
0.2
0.2
0.4
0.6
0.8
1.0
x
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Iterasjon med eksakte tall
En periode-3 bane:
NestList @ tent, 2 7, 5 D
: 2 7 , 4 7 , 6 7 , 2 7 , 4 7 , 6 7 > En periode-5 bane:
NestList @ tent, 2 11, 9 D
: 2 11 , 4 11 , 8 11 , 6 11 , 10 11 , 2 11 , 4 11 , 8 11 , 6 11 , 10 11 > Et stasjonært punkt:
NestList @ tent, 2 3, 2 D
: 2 3 , 2 3 , 2 3 >
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Iterasjon med flyt-tall 1
Dette var en periode-3 bane med eksakte tall:
Drop @ NestList @ tent, 2.
7, 70 D , 65 D
8 0., 0., 0., 0., 0., 0.
< Dette var en periode-5 bane med eksakte tall:
Drop @ NestList @ tent, 2.
11, 70 D , 65 D
8 0., 0., 0., 0., 0., 0.
< Dette var et stasjonært punkt med eksakte tall:
Drop @ NestList @ tent, 2.
3, 70 D , 65 D
8 0., 0., 0., 0., 0., 0.
<
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Iterasjon med flyt-tall 2
Her velger vi 10 vilk ˚arlige flyttall som start punkter, med samme resultat:
Table @ Drop @ NestList @ tent, RandomReal @D , 70 D , 69 D , 8 10
88 0., 0.
< , 8 0., 0.
< , 8 0., 0.
< , 8 0., 0.
< , 8 0., 0.
< , 8 0., 0.
< , 8 0., 0.
< , 8 0., 0.
< , 8 0., 0.
< , 8 0., 0.
<< Hvorfor? Det stasjonære punktet x = 0 er “frastøtende”, men alle baner synes ˚a ende opp der, n ˚ar vi bruker flyttall.
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Forklaring i C
Følgende enkle C-program gjør “nesten” det samme som Mma-programmet: /* File: bitshift.c
*/ /* Compile with: */ /* gcc -o bitshift bitshift.c */ #include
Tallsystemer og datarepresentasjon I
Binær addisjon og multiplikasjon
Kjøring av programmet
torejo@micro:˜/edu/darknet-12/c> ./bitshift 1 x 2 = 2 2 x 2 = 4 4 x 2 = 8 8 x 2 = 16 16 x 2 = 32 32 x 2 = 64 64 x 2 = 128 .... deleted output ....
536870912 x 2 = 1073741824 1073741824 x 2 = -2147483648 -2147483648 x 2 = 0 0 x 2 = 0 0 x 2 = 0 0 x 2 = 0 Vi ser alts ˚a at repeterte bitshift mot venstre vil gi oss 0 tilslutt.