Njuike sisdollui
Bargobihttá

Tallsystemer. Det binære tallsystemet

Det fins 10 typer mennesker: De som forstår binære tall, og de som ikke gjør det.

1.1.100

Skriv tallene på utvidet form med potenser (eksempel: 103=1·102+0·101+3·100).

a) 23

Løsning

23=2·101+3·100

b) 50

Løsning

50=5·101+0·100

c) 403

Løsning

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

d) 1012

Løsning

Vi kan sette tallene inn i en tabell slik som på teorisiden 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øsning

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

f) 1 011 1012

Løsning

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

g) 2E16

Løsning

2E16=2·161+14·160

h) 4AD216

Løsning

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

1.1.101

Skriv tallene som tall i titallsystemet.

a) 1012

Løsning

Vi finner svaret ved å skrive tallet på utvidet form.

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

b) 11 0012

Løsning

Vi kan godt utelate leddene som blir 0 når vi skriver tallene på utvidet form, siden vi skal gjøre om til tall i titallsystemet.

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

c) 110 0012

Løsning

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øsning

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øsning

BC16=11·161+12·160=18810

f) 14FF16

Løsning

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

g) 2758

Tips til oppgaven

Dette er et tall i åttetallsystemet.

Løsning

Vi må bruke potenser der grunntallet er 8 når vi skal skrive tallet på utvidet form.

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

1.1.102

Skriv tallene som tall i totallsystemet.

a) 1010

Løsning

Vi må skrive 10 som en sum av toerpotenser. 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øsning

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øsning

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øsning

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

Hva blir tallet i totallsystemet som starter med 1 og har 16 nuller etter seg hvis vi regner det om til et tall i titallsystemet?

Løsning

1-tallet står på plassen som tilsvarer potensen 216.

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

1.1.104

a) Legg sammen 378 og 742 manuelt ved å sette dem under hverandre.

Løsning

   31718+742= 1120

b) Legg sammen 10 1012 og 1 1102 på tilsvarende måte.

Løsning

   1101101+  1110= 100011

1.1.105 – utfordring!

a) Skriv en algoritme for et program som gjør om et tall i totallsystemet til et tall i titallsystemet.

Løsning

Vi tar utgangspunkt i framgangsmåten i oppgaven over, der vi gjør om fra et tall i totallsystemet til et tall i titallsystemet ved regning. Vi lar programmet ta siffer for siffer og multiplisere hvert siffer med riktig toerpotens .

  • La brukeren av programmet skrive inn det binære tallet.

  • Finn lengden av tallet, altså hvor mange sifre tallet har.

  • Lag ei løkke som sjekker hvert siffer, og dersom sifferet er 1, multipliseres 1 med den tilhørende toerpotensen. Resultatet legges til en variabel for tallet i titallsystemet.

  • Skriv innholdet av variabelen til skjermen.

b) Skriv koden til programmet.

Tips til oppgaven

Her kan det være lurt å bruke ei for-løkke. Husk at det er mange måter å løse dette på.

Løsning
python
1    # Skriver litt forklarende tekst
2print("Dette programmet gjør om et binært tall til et tall i titallsystemet.")
3bin = input("Skriv inn det binære tallet: ")
4sifre = len(bin)
5sum = 0
6    # Lager for-løkke som går gjennom det binære tallet 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 tallet {bin} er {sum} i titallsystemet.")

c) Skriv en algoritme for et program som gjør om et tall i titallsystemet til et binært tall.

Løsning

Vi må finne ut hvordan tallet skrives på utvidet form i totallsystemet, som betyr at vi må skrive tallet som en sum av toerpotenser.

  • La brukeren skrive inn tallet i titallsystemet som skal gjøres om.

  • Først må vi finne den største toerpotensen som er mindre enn tallet som skal gjøres om. (For tallet 100 er 26=64 den største toerpotensen som er mindre enn tallet.) Dette kan vi gjøre ved å prøve med 2 opphøyd i 0, 2 opphøyd i 1 og så videre, helt til toerpotensen blir større enn tallet som skal gjøres om.

  • Vi regner ut hvor stor resten blir når vi trekker fra denne toerpotensen. Vi får sifferet "1" for denne potensen.

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

  • Skriv ut svaret til skjermen.

d) Skriv koden til programmet.

Løsning
python
1    # Skriver litt forklarende tekst
2print("Dette programmet gjør om et tall i titallsystemet til et binært tall.")
3titall = int(input("Skriv inn tallet i titallsystemet: "))
4    # Finner den største toerpotensen som er mindre enn tallet
5i = 0
6while 2**(i+1) < titall:
7  i = i + 1
8
9bin = ""
10rest = titall
11    # Genererer det binære tallet 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"Tallet {titall} i titallsystemet er {bin} i totallsystemet.")