Mandag 12. januar

Download Report

Transcript Mandag 12. januar

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

Oversikt

1

Litt repetisjon

2

Tallsystemer og datarepresentasjon I

3

Binær addisjon og multiplikasjon

4

Representasjon av fortegn

5

Representasjon av tegnsett

6

Et eksempel

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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

+

x y

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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.

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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.

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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 .

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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.

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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 .

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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.

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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 .

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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 .

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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 .

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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.

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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.....

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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 .

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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 .

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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 .

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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.

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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 .

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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.

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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.

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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).

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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.

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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.

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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.

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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.

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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.

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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 xI. 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.

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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.

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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.

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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 <

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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 >

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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.

<

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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.

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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 #include int main(void) { int i, n; } n=1; for(i=1; i <= 35; i++) { printf("%d x 2 = %d\n",n,n*2); n = n*2; } exit(0);

Litt repetisjon

Tallsystemer og datarepresentasjon I

Binær addisjon og multiplikasjon

Representasjon av fortegn

Representasjon

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.