1.3.4 Digital tallbehandling

Begreper og enheter

Den aller minste enheten i et digitalt system er en bit (BInary digiT), og den har en av to mulige verdier: 0 eller 1. En datamaskin forstår naturligvis ikke de skrevne symbolene 0 og 1, og derfor må vi presentere 0 og 1 med to tilstander, for eksempel brytere eller releer som er på eller av eller elektroniske kretser som har to spenningsverdier, for eksempel 0 eller 5 volt. Pa lagringsmedier med magnetiserbart materiale kan vi magnetisere små partikler i to forskjellige retninger. Pa optiske lagringsmedier kan vi ha bitte små felt med høy eller lav refleksjon. 8 bit utgjør en byte. Vi forkorter byte til B for a skille den fra bit som forkortes b.

Når det er snakk om lagring av data, oppgir vi dette som regel alltid i byte, som for eksempel 1 megabyte (MB) som er det samme som 8 x 1 million bit. En harddisks lagringskapasitet kan eksempelvis være 320 gigabyte (320 GB).

Her følger en oversikt over sammenhengen mellom de ulike størrelsene:

  • 1 byte (B) = 8 bit (b)

  • 1000 bit = 1 kilobit (kb)

  • 1000 kb = 1 megabit (Mb)

  • 1000 Mb = 1 gigabit (Gb)

Når data skal overføres på en datalinje er det vanlig å operere med bit og datahastighet i bit/sek (bps). Både tekst, lyd og bilder gjøres om til bit før det overføres som data.

I tillegg til 0 og 1 er det også vanlig å angi et bits tilstand med på/avhøy/lav, sann/usannsatt/resatt eller bara JA/NEI.

I digital elektronikk angis de to nivåene som to ulike spenninger, for eksempel 0 volt og 5 volt.

Tallsystem

Digital lagring og digital overforing foregår ved hjelp av tallkoder. Begrepet digital kommer av ordet digit som er det latinske ordet for finger og betyr tall eller siffer. Dermed har vi allerede sagt at tall har med finger å gjøre, og den egentlige årsaken til at menneskeheten har valgt titallsystemet, er at vi er utstyrt med ti fingre. Skulle vi ha valgt et praktisk tallsystem i dag, ville vi sannsynligvis endt opp med et tallsystem som var bedre tilpasset var digitale hverdag og de digitaltekniske systemene vi omgås. Men titallsystemet er så godt innarbeidet at det ville by på svært store utfordringer å endre på det. Tenk bare på pengesystemene rundt omkring i verden, måleenheter, datoer og årstall osv. De er alle basert på titallsystemet. Vi kan operere med flere tallsystemer. Fra historien kjenner vi romertallsystemet, men det er lite egnet til beregninger etter de metoder som benyttes i dag.

Titallsystemet (også kalt desimaltallsystemet) er et posisjonstallsystem der både sifferets størrelse og posisjonen det står, har betydning for tallets verdi. Vi bruker betegnelsen mest og minst signifikante siffer, der sifferet lengst til venstre er mest signifikant, mens det lengst til høyre er minst signifikant. I titallsystemet er grunntallet 10, og vi opererer med like mange forskjellige symboler: symbolene 0–9. For øvrig er titallsystemet så kjent at vi bruker ikke mer spalteplass til å forklare det her. For så vidt er det ikke noe problem å lage et hvilket som helst tallsystem med et hvilket som helst grunntall, men om det er særlig praktisk er en annen sak.

Totallsystemet benyttes i datamaskiner. Andre tallsystemer som det er praktisk å operere med, er åttetallsystemet (oktale tallsystem) og sekstentallsystemet. (det hexadesimale tallsystem). Det som gjør disse tallsystemene særlig anvendelige, er den enkle overgangen og omregningen til totallsystemet.

Arbeidsoperasjonene til en datamaskin består i å tolke og behandle digitale tall og data i form av binære koder. Hvordan dette gjøres og hvordan vanlige tall i titallsystemet kan omgjøres til binærtall og hvordan vi kan utføre regneoperasjoner binært, skal vi se videre på i dette kapittelet.

Regning i totallsystemet

Regnereglene i totallsystemet er i prinsippet helt identiske med reglene for titallsystemet. Men fordi vi bare opererer med to symboler, blir beregningene enklere. Ved hjelp av logiske porter lar det seg gjøre a lage kretser som utfører de fire grunnleggende regningsartene. Mer komplekse kretser kan utføre alle kjente regningsarter. En slik krets er ALU (Aritmetic Logic Unit) eller aritmetisk logisk enhet, som foruten å utfore regneoperasjoner, også kan utføre logiske operasjoner som ELLER og OG, samt de øvrige logiske funksjonene som vi kjenner fra logiske kretser. ALU kan man få som separate komponenter. De utgjør også en del av CPU-en Central Prosessing Unit) i en mikroprosessor.

Koding av datainformasjon

Datainformasjon består i utgangspunktet av bokstaver, tall og skilletegn, og kalles alfanumeriske tegn eller alfanumerisk informasjon. En datamaskin kan bare tolke de binære verdiene 0 og 1. Koding vil i denne sammenheng si at alle tegn gjøres om til bit, der hvert tegn har sitt bestemte bitmønster. Hvor mange bit et tegn nødvendigvis må besta av, er avhengig av hvor mange tegn som skal kodes. Skal vi for eksempel kode alle 29 bokstaver i det norske alfabet, trengs 25 = 32 mulige kombinasjoner, men da har vi ikke tatt i betraktning at vi kan ha både store og små bokstaver og må derfor fordoble antall tegn. Tar vi med alle tallsymbolene fra 0 til 9 samt alle skilletegn som punktum, komma osv., får vi til sammen ca. 90 tegn. For a kunne kode alle 90, må vi ha grupper på 7 bit som gir til sammen 27 = 128 mulige kombinasjoner.

Det har vært utviklet forskjellige slike koder. Den mest kjente er ASCII-koden (American Standards Code for Information Interchange) og er utviklet av den amerikanske standardorganisasjonen ANSI (American National Standards Institute). ASCII er i dag lite i bruk, men har dannet grunnlaget for andre koder som er bedre tilpasset dagens systemer. En slik kode er Unicode.

Tallsystemer

  • Titallsystemet: Det mest kjente og benyttede tallsystem (også kalt desimaltallsystemet). Titallsystemet har ti symboler, tallene 0–9. Grunntallet er 10.

  • Totallsystemet: Datamaskiner og digitale systemer benytter totallsystemet (også kalt binærtallsystemet), der hvert siffer utgjør et bit. Totallsystemet har to symboler, 0 og 1. Grunntallet er 2.

  • Det heksadesimale tallsystem: Digitale data presenteres ofte i det heksadesimale tallsystem (16-tallsystemet). Dette tallsystemet har 16 symboler, tallene 0–9 og videre A–F. Grunntallet er 16.

    • Det heksadesimale tallsystemet benyttes fordi sammenhengen med totallsystemet er forholdsvis enkel.

Posisjonstallsystem

Alle de nevnte tallsystemene kalles posisjonstallsystem. Det vil si at sifferets verdi er bestemt både av symbolverdien og posisjonen sifferet står i.

For eksempel vil sifrene i tallet 555 ha ulik verdi avhengig av hvilken posisjon sifrene står i:

Desimaltallsystemet (titallsystemet)

I de aller fleste beregninger og tallpresentasjoner vi utfører til daglig, benytter vi tallverdier i titallsystemet.

Årsaken til at menneskeheten har tatt i bruk titallsystemet, har sammenheng med at vi er utstyrt med ti fingre.

Titallsystemet er imidlertid forholdsvis komplisert å håndtere i forbindelse med datasystemer sammenlignet med totallsystemet eller det heksadesimale tallsystem.

Binærtallsystemet

  • Datamaskiner og digitale systemer opererer med totallsystemet, også kalt binærtallsystemet.

  • Navnet kommer av bi som betyr «to».

  • I totallsystemet er grunntallet 2, og det benyttes to symboler, 0 og 1, også kalt bit. Alle beregninger og digitale funksjoner utføres med tallsymbolene 0 og 1.

  • Alle data i en datamaskin lagres som koder av 0 og 1, enten disse stammer fra tekst, lyd eller bilder. Det samme skjer når data overføres på en datalinje.

  • All informasjon og alle data som mates inn i en datamaskin eller et digitalt system, må derfor gjøres om til bit, det vil si sifrene 0 og 1.

  • På samme måte gjøres 0 og 1 om til lesbar informasjon i form av tekst eller bilder når den skal presenteres på en skjerm eller skriver.

Tallrekker

Innbyrdes tallrekker fra 0 til 15 mellom titallsystemet, det heksadesimale tallsystem og binærtallsystemet:

Innbyrdes tallrekker fra 0 til 15 mellom titallsystemet, det heksadesimale tallsystem og binærtallsystemet:

Når vi opererer med flere tallsystem, må vi på en eller annen måte vise hvilket tallsystem man er i. Det kan være flere måter å markere dette på, eksempelvis:

Titallsystemet: 510, 5D

Det heksadesimale tallsystem: 0316, 03H

Binærtallsystemet:     10112, 1011B

Omregning mellom desimaltall og binærtall

  • Når tallverdiene i titallsystemet skal behandles i en datamaskin eller PC, må de konverteres til binærtall.

  • På samme måte må binærtallene gjøres desimale når resultatet fra datamaskinene skal presenteres.

  • Omregning mellom de to tallsystemene kan gjøres ved hjelp av omregningstabeller tilsvarende det vi så på foregående side:

desmal og binær.png

Ved store tall kan det bli upraktisk å benytte omregningstabeller. Vi må derfor finne andre måter å gjøre omregningen på.

Omregning fra desimaltall til binærtall

Å regne om fra titallsystemet til totallsystemet kan gjøres ved hjelp av den såkalte delingsmetoden, der vi deler det aktuelle tallet med 2.

Tar vi som eksempel for oss tallet 19, vil fremgangsmåten bli slik:

19 : 2 = 9 + 1 i rest   (LSB = Least Significant Bit)

 9 : 2 = 4 + 1 i rest

4 : 2 = 2 + 0 i rest

2 : 2 = 1 + 0 i rest

1 : 2 = 0 + 1 i rest    (MSB = Most Significant Bit) 

Ved å benytte informasjonen som ligger som rest etter hver deling og starter fra nederst (MSB) til øverst (LSB) får vi det binære tallet 10011. Dette tallet utgjør den binære verdien for tallet 19 i ti-tallsystemet. Samme metode kan benyttes på et hvilket som helst tall i ti-tallsystemet.

Omregning fra binærtall til desimaltall

Når vi skal gjøre om fra binærtall til desimaltall, utnytter vi at tallsystemene er posisjonstallsystemer.

Eksempel:

Vi skal gjøre om tallet 10011 til desimaltall:

10011 = 1 * 24 + 0 * 23 + 0 * 22 + 1 *21 + 1 * 20 = 16 + 0 + 0 + 2 + 1 = 19

Samme fremgangsmåte kan benyttes for et hvilket som helst binærtall.

Omregning fra binærtall til heksadesimale tall

Årsaken til at datasystemer også benytter det heksadesimale tallsystem i presentasjon av tall, er at overgangen mellom det binære tallsystem og det heksadesimale tallsystem er enkel.

Skal vi eksempelvis gjøre om det binære tallet 10010110110100001000, deler vi tallet i grupper på fire og omgjør hver bitgruppe (nibble).

Altså blir resultatet 96D08.

Ved omgjøring fra det heksadesimale system til binærsystemet gjør vi motsatt.

Omgjøring fra det heksadesimale system til binærsystemet (over)

Regnekretser

På samme måte som vi regner i titallsystemet, kan vi også utføre matematiske beregninger i totallsystemet. Ved hjelp av logiske porter kan vi bygge regnekretser som kan utføre alle tenkelige regningsarter.

Addere binærtall

Det er ingen prinsipiell forskjell på å addere binærtall og desimaltall, f.eks.:

101101 + 101110

Fremgangsmåte:

            1  1

         1 0 1 1 0 1

+      1 0 1 1 1 0

     1 0 1 1 0 1 1

Ved hjelp av digitale portkretser kan man lage binære regnekretser som kan utføre alle de fire regningsartene (addisjon, subtraksjon, multiplikasjon og divisjon) samt andre, mer komplekse regneoperasjoner.

Subtraksjon ved toerkomplementmetoden

Disse to tallene skal subtraheres:

Det er forholdsvis enkelt å bygge en krets ved hjelp av logiske porter som utfører denne operasjonen.

Binære regnekretser

Fulladdere

En fulladderer (eng. fulladder) er en krets som kan addere to binære tall. Kretsen tar hensyn til mente fra foregående adderere. Den gir også ut mente dersom summen av de to tallene resulterer i mente. Ved å sette sammen flere fulladderere kan vi addere binæretall med flere sifre.

Parallell-adderer

Blokkskjema med to fulladderere utgjør en tobit parallelladderer for addisjon av to to-bit binærtall.

De to fulladdererne over koblet med logiske porter:

Addisjon- og subtraksjonskrets

Blokkskjema for krets som både kan addere og subtrahere to firebit binærtall (subtraksjon ved hjelp av toerkomplement).

Aritmetisk logisk enhet (ALU)

  • Aritmetisk logisk enhet (eng. Arithmetic Logic Unit) eller ALU er en krets eller enhet som kan utføre alle regneoperasjoner og logiske operasjoner.

  • Kan kjøpes som separate integrerte kretser.

  • ALU er også innebygget og utgjør en del av funksjonene i en mikroprosessor og i en mikrokontroller.

Oppgaver digital tallbehandling

 
  1. Gjør følgende desimaltall om til binærtall ved hjelp av delingsmetoden:
    37 =
    74 =

  2. Gjør binærtall om til desimaltall:
    1011 =
    11010111 =

  3. Gjør de samme binærtallene som i oppgave 2 om til heksadesimale tall:
    1011 =
    11010111 =