Hopp til innhald
Oppgåve

Talsystem. Det binære talsystemet

Det finst 10 typar menneske: Dei som forstår binære tal, og dei som ikkje gjer det.

1.1.100

Skriv tala på utvida form med potensar (døme: 103=1·102+0·101+3·100).

a) 23

Løysing

23=2·101+3·100

b) 50

Løysing

50=5·101+0·100

c) 403

Løysing

403=4·102+0·101+3·100

d) 1012

Løysing

Vi kan setje tala inn i ein tabell slik som på teorisida for å få litt ekstra hjelp.

4=22

2=21

1=20

1

0

1

1012=1·22+0·21+1·20

e) 11 0112

Løysing

11 0112=1·24+1·23+0·22+1·21+1·20

f) 1 011 1012

Løysing

1 011 1012=1·26+0·25+1·24+1·23+ 1·22+0·21+1·20

g) 2E16

Løysing

2E16=2·161+14·160

h) 4AD216

Løysing

4AD216=4·163+10·162+13·161+2·160

1.1.101

Skriv tala som tal i titalssystemet.

a) 1012

Løysing

Vi finn svaret ved å skrive talet på utvida form.

1012 = 1·22+0·21+1·20= 1·4+1·1= 510

b) 11 0012

Løysing

Vi kan godt utelate ledda som blir 0 når vi skriv tala på utvida form, sidan vi skal gjere om til tal i titalssystemet.

11 0012 = 1·24+1·23++0·22+0·21+1·20= 1·16+1·8+1·1= 2510

c) 110 0012

Løysing

110 0012 = 1·25+1·24+0·23+0·22+0·21+1·20= 1·32+1·16+1·1= 4910

d) 1 011 0112

Løysing

1 011 0112=1·26+0·25+1·24+1·23+ 0·22+1·21+1·20=64+16+8+2+1=9110

e) BC16

Løysing

BC16=11·161+12·160=18810

f) 14FF16

Løysing

14FF16 = 1·163+4·162+15·161+15·160= 4 096+4·256+15·16+15= 5 37510

g) 2758

Tips til oppgåva

Dette er eit tal i åttetalssystemet.

Løysing

Vi må bruke potensar der grunntalet er 8 når vi skal skrive talet på utvida form.

2758 = 2·82+7·81+5·80= 2·64+7·8+5= 18910

1.1.102

Skriv tala som tal i totalssystemet.

a) 1010

Løysing

Vi må skrive 10 som ein sum av toarpotensar. 10 er mindre enn 16 (23), men større enn 8 (22). Resten blir 2 (21).

1010 = 8+2= 1·23+1·21= 1·23+0·22+1·21+0·20= 1 0102

b) 2110

Løysing

2110 = 16+4+1= 1·24+1·22+1·20= 1·24+0·23+1·22+0·21+1·20= 10 1012

c) 10010

Løysing

10010 = 64+32+4= 1·26+1·25+1·22= 1·26+1·25+0·24+0·23+ 1·22+0·21+0·20= 1 100 1002

d) 20010

Løysing

20010 = 128+64+8= 1·27+1·26+1·23= 1·27+1·26+0·25+0·24+ 1·23+0·22+0·21+0·20= 11 001 0002

1.1.103

Kva blir talet i totalssystemet som startar med 1 og har 16 nullar etter seg dersom vi reknar det om til eit tal i titalssystemet?

Løysing

1-talet står på plassen som svarer til potensen 216.

10 000 000 000 000 0002=1·216=65 53610

1.1.104

a) Legg saman 378 og 742 manuelt ved å setje dei under kvarandre.

Løysing

   31718+742= 1120

b) Legg saman 10 1012 og 1 1102 på tilsvarande måte.

Løysing

   1101101+  1110= 100011

1.1.105 – utfordring!

a) Skriv ein algoritme for eit program som gjer om eit tal i totalssystemet til eit tal i titalssystemet.

Løysing

Vi tek utgangspunkt i framgangsmåten i oppgåva over, der vi gjer om frå eit tal i totalssystemet til eit tal i titalssystemet ved rekning. Vi lar programmet ta siffer for siffer og multiplisere kvart siffer med rett toarpotens .

  • La brukaren av programmet skrive inn det binære talet.

  • Finn lengda av talet, altså kor mange siffer talet har.

  • Lag ei lykkje som sjekkar kvart siffer, og dersom sifferet er 1, blir 1 multiplisert med den tilhøyrande toarpotensen. Resultatet blir lagt til ein variabel for talet i titalssystemet.

  • Skriv innhaldet av variabelen til skjermen.

b) Skriv koden til programmet.

Tips til oppgåva

Her kan det vere lurt å bruke ei for-lykkje. Hugs at det er mange måtar å løyse dette på.

Løysing
python
1    # Skriv litt forklarande tekst
2print("Dette programmet gjer om eit binært tal til eit tal i titalssystemet.")
3bin = input("Skriv inn det binære talet: ")
4sifre = len(bin)
5sum = 0
6    # Lagar for-lykkje som går gjennom det binære talet siffer for siffer
7for i in range(sifre):
8  if bin[i] == "1":
9    sum = sum + 2**(sifre-1-i)
10  
11print(f"Det binære talet {bin} er {sum} i titalssystemet.")

c) Skriv ein algoritme for eit program som gjer om eit tal i titalssystemet til eit binært tal.

Løysing

Vi må finne ut korleis talet blir skrive på utvida form i totalssystemet, som betyr at vi må skrive talet som ein sum av toarpotensar.

  • La brukaren skrive inn talet i titalssystemet som skal gjerast om.

  • Først må vi finne den største toarpotensen som er mindre enn talet som skal gjerast om. (For talet 100 er 26=64 den største toarpotensen som er mindre enn talet.) Dette kan vi gjere ved å prøve med 2 opphøgd i 0, 2 opphøgd i 1 og så vidare, heilt til toarpotensen blir større enn talet som skal gjerast om.

  • Vi reknar ut kor stor resten blir når vi trekker frå denne toarpotensen. Vi får sifferet "1" for denne potensen.

  • Så må vi sjekke om resultatet er positivt eller negativt ved å trekke den nest største toarpotensen frå resten. Er resultatet negativt, betyr det at resten er mindre enn den nest største toarpotensen, som gir sifferet "0" på denne posisjonen i det binære talet. Er resultatet positivt eller null, får vi sifferet "1" på denne posisjonen, og vi trekker denne toarpotensen frå resten. Så gjentek vi denne prosessen til vi har komme til 2 opphøgd i 0.

  • Skriv ut svaret til skjermen.

d) Skriv koden til programmet.

Løysing
python
1    # Skriv litt forklarande tekst
2print("Dette programmet gjer om eit tal i titalssystemet til eit binært tal.")
3tital = int(input("Skriv inn talet i titalssystemet: "))
4    # Finn den største toarpotensen som er mindre enn talet
5i = 0
6while 2**(i+1) < tital:
7  i = i + 1
8
9bin = ""
10rest = tital
11    # Genererer det binære talet siffer for siffer
12while i > -1:
13  if rest - 2**i >= 0:
14    rest = rest - 2**i
15    bin = bin + "1"
16  else:
17    bin = bin + "0"
18  
19  i = i - 1  
20  
21print(f"Talet {tital} i titalssystemet er {bin} i totalssystemet.")