Konvertering mellom tallsystemer

Like dokumenter
Alle hele tall g > 1 kan være grunntall i et tallsystem.

Tallsystemer. Tallene x, y, z og u er gitt ved x = 2, y = 2, z = 4 og u = 2. Dermed blir =

Modulo-regning. hvis a og b ikke er kongruente modulo m.

Alle hele tall g > 1 kan være grunntall i et tallsystem.

Diskret matematikk tirsdag 13. oktober 2015

Tallsystemer. Tallene x, y, z og u er gitt ved x = 2, y = 2, z = 4 og u = 2. Dermed blir =

Matematikk for IT, høsten 2016

MAT1030 Diskret Matematikk

Tall. Posisjons-tallsystemer. Representasjon av heltall. Tall positive, negative heltall, flytende tall. Tekst ASCII, UNICODE XML, CSS

INF1040 Digital representasjon TALL

MAT1030 Forelesning 2

KONTROLLSTRUKTURER. MAT1030 Diskret matematikk. Kontrollstrukturer. Kontrollstrukturer. Eksempel (Ubegrenset while-løkke)

TALL. Titallsystemet et posisjonssystem. Konvertering: Titallsystemet binære tall. Det binære tallsystemet. Alternativ 1.

Potenser og tallsystemer

Tall. Tallsystemer. Posisjonstallsystemer. Veiing med skålvekt titallsystemet 123 = = 7B 16. Lærebokas kapittel 6

Potenser og tallsystemer

Oppsummering av Uke 3. MAT1030 Diskret matematikk. Binære tall. Oppsummering av Uke 3

Tallsystemer. Læringsmål. Posisjonstallsystemer. Potensregning en kort repetisjon 123 = = 7B 16. Forstå posisjonstallsystemer

MAT1030 Diskret matematikk

Forelesning 2. Flere pseudokoder. Representasjoner av tall. Dag Normann januar 2008 KONTROLLSTRUKTURER. Kontrollstrukturer. Kontrollstrukturer

Tallsystemer. Posisjonstallsystemer. Måling med desimal målestokk. Den generelle formelen for titallsystemet 123 = = 7B 16

INF1040 Oppgavesett 1: Tallsystemer og binærtall

MAT1030 Diskret matematikk

Mer om representasjon av tall

Teori og oppgaver om 2-komplement

MAT1030 Diskret matematikk

TDT4105/TDT4110 Informasjonsteknologi grunnkurs:

Litt om Javas håndtering av tall MAT-INF 1100 høsten 2004

Oppsummering. MAT1030 Diskret matematikk. Oppsummering. Oppsummering. Eksempel

Telle med 120 fra 120

Telle med 0,3 fra 0,3

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2016

Reelle tall på datamaskin

Hashfunksjoner. Hashfunksjonen beregner en indeks i hashtabellen basert på nøkkelverdien som vi søker etter

Kapittel 2 TALL. Tall er kanskje mer enn du tror

INF1040 løsningsforslag oppgavesett 7: Tall og geometrier

Norsk informatikkolympiade runde

Sist forelesning snakket vi i hovedsak om trær med rot, og om praktisk bruk av slike. rot. barn

Kapittel 3: Litt om representasjon av tall

Posisjonsystemet FRA A TIL Å

Resymé: I denne leksjonen blir de viktigste tallsystemer presentert. Det gjelder det binære, heksadesimale og desimale tallsystem.

b) 17 går ikke opp i 84 siden vi får en rest på 16 når 84 deles med 17 c) 17 går opp i 357 siden

TDT4105/TDT4110 Informasjonsteknologi grunnkurs:

I Kapittel 2 lærte vi om tall i alternative tallsystemer, i hovedsak om binære tall, oktale tall og heksadesimale tall.

Valg av kontaktpersoner/tillitsvalgte. MAT1030 Diskret matematikk. Oppsummering av kapittel 2. Representasjon av hele tall

Øvingsforelesning 5. Binær-, oktal-, desimal- og heksidesimaletall, litt mer tallteori og kombinatorikk. TMA4140 Diskret Matematikk

Øvingsforelesning 4. Modulo hva er nå det for no? TMA4140 Diskret Matematikk. 24. og 26. september 2018

INF1040 Oppgavesett 14: Kryptering og steganografi

Rekurrens. MAT1030 Diskret matematikk. Rekurrens. Rekurrens. Eksempel. Forelesning 16: Rekurrenslikninger. Dag Normann

UNIVERSITETET I OSLO

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2017

Tall og Format i Internett

INF1400 Kap 1. Digital representasjon og digitale porter

Introduksjon. MAT1030 Diskret Matematikk. Introduksjon. En graf. Forelesning 22: Grafteori. Roger Antonsen

Introduksjon. MAT1030 Diskret matematikk. Søkealgoritmer for grafer. En graf

MAT1030 Diskret matematikk

MAT1030 Diskret Matematikk

Forelesning 29: Kompleksitetsteori

Norsk informatikkolympiade runde

7) Radix-sortering sekvensielt kode og effekten av cache

Tall. Ulike klasser tall. Læringsmål tall. To måter å representere tall. De naturlige tallene: N = { 1, 2, 3, }

1 Potenser og tallsystemer

UNIVERSITETET I OSLO

Arbeidshefte Multiplikasjon og divisjon

MAT1030 Forelesning 3

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2013

Kjære foreldre/foresatte

SUBTRAKSJON FRA A TIL Å

Kombinatorikk. MAT1030 Diskret Matematikk. Oppsummering av regneprinsipper

MAT1030 Diskret Matematikk

Norsk informatikkolympiade runde

Relativt primiske tall

Telle med 19 fra 19. Mål. Gjennomføring. Telle i kor Telle med 19 fra 19 Planleggingsdokument

MAT1030 Diskret matematikk

MAT1030 Diskret Matematikk

Kapittel 5: Mengdelære

MAT1030 Forelesning 22

Oppgaver til kapittel 19 - Kryptering og steganografi

Kapittel 5: Mengdelære

MAT1030 Diskret Matematikk

TMA4140 Diskret Matematikk Høst 2018

Løsningsforslag til eksamenen i MAT103, våren 2015

Oppgavestreng divisjon med desimaltall - transkripsjon av samtalen

Oblig3Pi - en matematisk rettet obligatorisk oppgave nr. 3 (av 4) i INF1000 høsten 2010 ett av to alternativer for oblig 3.

Tall. Binære regnestykker. Binære tall positive, negative heltall, flytende tall

MAT1030 Diskret Matematikk

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

A) 13 B) 15 C) 18 D) 23 E) 24

Oversikt over kvadratiske kongruenser og Legendresymboler

MAT1030 Diskret matematikk

Vi anbefaler at elevene blir introdusert for likninger via en praktisk problemstilling. Det kan for eksempel være:

UNIVERSITETET I OSLO

Regning med tall og bokstaver

UNIVERSITETET I OSLO

Oblig3Pi- en matematisk rettet obligatorisk oppgave nr. 3 (av 4) i INF1000 ett av to alternativer for oblig 3.

INF1040 Oppgavesett 7: Tall og geometrier

INF2220: Time 12 - Sortering

Tallregning Vi på vindusrekka

Analysedrypp I: Bevis, mengder og funksjoner

Transkript:

Konvertering mellom tallsystemer Hans Petter Taugbøl Kragset hpkragse@ifi.uio.no November 2014 1 Introduksjon Dette dokumentet er ment som en referanse for konvertering mellom det desimale, det binære, og det heksadesimale tallsystemet, og er tilsiktet studenter i INF1000 ved Institutt for Informatikk, Universitetet i Oslo. 1.0.1 Notasjon Det er vanlig å skrive grunntallet til et tall med nedsenket skrift etter et tall, så det vi er vant til som 100 er mest presist hvis vi sier 100 10. Det er viktig å være presis med dette når vi jobber frem og tilbake mellom tallsystemer. 2 Konvertering til desimal 2.1 Generelt Det som kommer er kanskje banalt og virker dumt, men det er viktig å ha god forståelse av prinsippene bak et tallsystem, for reglene er direkte overførbare mellom systemene. På tvers av tallsystemene er det mulig å anvende de samme teknikkene, og vi har en grunnformel som vi skal forholde oss til: verdi = siffer grunntall posisjon (1) Denne formelen gir oss verdien av et gitt siffer i et gitt tall. Grunntallet i et tallsystem er alltid det samme som antall tilgjengelige siffer i det samme tallsystemet. Posisjon er her sifferets posisjon i tallet, hvor posisjonen lengst til høyre er 0, og øker mot venstre. 2.2 Desimale tall Dette er tatt med for å vise hvordan formelen fungerer på tall vi er veldig kjent med fra før. Vi bruker formelen (1) på tallet 368 10 og får følgende utregning av verdier: 0 8 8 10 0 = 8 1 = 8 10 1 6 6 10 1 = 6 10 = 60 10 2 3 3 10 2 = 3 100 = 300 10 Summen av alle verdiene er selvfølgelig 368, som var tallet vi startet med. Her har vi regnet fra desimal til desimal! 1

2.3 Binære tall Det binære tallsystemet har grunntallet 2, og består kun av sifferene 0 og 1. Vi bruker igjen formelen (1). For tallet 101010 2 får vi følgende utregning av verdier: Summen av verdiene er nå 0 0 0 2 0 = 0 1 = 0 10 1 1 1 2 1 = 1 2 = 2 10 2 0 0 2 2 = 0 4 = 0 10 3 1 1 2 3 = 1 8 = 8 10 4 0 0 2 4 = 0 16 = 0 10 5 1 1 2 5 = 1 32 = 32 10 32 + 8 + 2 = 42 10 = 101010 2 Som vi ser tar binære tall mye større plass enn desimale tall. 2.4 Heksadesimale tall Det heksadesimale tallsystem har grunntallet 16, og har verdiene 0 til og med 9, og a til og med f. Nå begynner det å se annerledes ut, vi blander bokstaver og tall. Her er en liten oversikt over hvordan vi oversetter bokstavene til tall, store eller små bokstaver spiller ingen rolle: Heksadesimal Desimal A 10 B 11 C 12 D 13 E 14 F 15 Hvis vi bare holder tunga rett i munnen og bruker den samme formelen, ser vi at utregning til desimal ikke er noen sak, la oss prøve tallet BEEF 16 : Summen av verdiene er altså 0 F 15 16 0 = 15 0 = 15 10 1 E 14 16 1 = 14 16 = 224 10 2 E 14 16 2 = 14 256 = 3584 10 3 B 11 16 3 = 11 4096 = 45056 10 15 + 224 + 358 + 45056 = 48879 10 = BEEF 16 Det heksadesimale tallet tar her mindre plass enn det desimale. 3 Konvertering til binær For å regne om til binære tall bruker vi andre metoder enn når vi regner til desimale tall. Metoden vi bruker for å komme fra heksadesimal til binær skiller seg også fra måten vi bruker på desimale tall. Vi kommer nærmere inn på dette. 2

3.1 Desimale tall Algoritmen for å konvertere fra desimale tall til binære tall er ganske enkel i teorien: Del tallet på to (heltalssdivisjon). Får vi rest? Ja: skriv ned resten (alltid 1 for binære tall) Nei: skriv 0 Start på toppen igjen, helt til svaret på heltallsdivisjonen er 0 La oss prøve med tallet 79: Verdi Utregning Rest 79 79 2 = 39, 79%2 = 1 1 39 39 2 = 19, 39%2 = 1 1 19 19 2 = 9, 19%2 = 1 1 9 9 2 = 4, 9%2 = 1 1 4 4 2 = 2, 4%2 = 0 0 2 2 2 = 1, 2%2 = 0 0 1 1 2 = 0, 1%2 = 1 1 0 Det ferdige binære tallet leser vi så nedenfra og opp i kolonnen Rest. I dette tilfellet er 79 10 = 1001111 2 Vi gjør en modulo-beregning med % som vi kjenner fra Java for å finne resten. I praksis ser vi egentlig bare på om tallet er et oddetall eller partall, oddetall får alltid rest. 3.2 Heksadesimale tall Det er en veldig tett sammenheng mellom binære og heksadesimale tall, og det er hovedgrunnen til at vi lører oss det heksadesimale tallsystemet. Den enkleste måten å gå fra et heksadesimalt tall til et binært tall er ved å rett og slett se på hvert enkelt siffer i det heksadesimale tallet og finne det tilsvarende binære tallet, for så å slå de binære tallene vi har funnet sammen i akkurat den samme rekkefølgen som de sto i det heksadesimale tallet. Denne metoden er utrolig rask, og det er derfor en fordel å lære seg det binære tallet for tallene 0 f 16 som vi trenger i denne metoden. Vi tar et eksempel, vi gjør D3A3 16 om til binær: Heksadesimal siffer Binært tall Desimalt tall D 1001 13 3 0011 3 A 0110 10 3 0011 3 Videre konkatenerer vi de fire binære siffergruppene, og her er det veldig viktig at vi får med alle tallene, også nullene. Vær oppmerksom på at + her ikke betyr matematisk plussing, men konkatenering. Pass på at rekkefølgen til siffergruppene er det samme som rekkefølgen de heksadesimale sifrene sto i før vi begynte konverteringen. 1001 + 0011 + 0110 + 0011 = 10010011 01100011 Legg her spesielt merke til at vi går ovenfra og ned i motsetning til da vi regnet fra desimale tall, og at vi gjerne deler det binære tallet opp i grupper på 8 siffer for å forbedre leseligheten. 3

4 Konvertering til heksadesimal 4.1 Desimale tall Utregningen fra et desimalt tall til et heksadesimalt tall følger de samme linjene som konvertering fra et desimalt tall til et binært tall, bortsett fra at vi deler på 16 i steden for 2. Algoritmen blir da som følger: Del tallet på 16 (heltalssdivisjon). Får vi rest? Ja: skriv ned resten Nei: skriv 0 Start på toppen igjen, helt til svaret på heltallsdivisjonen er 0 Hvis vi prøver dette for tallet 435 10 får vi følgende utregning: Verdi Utregning Rest Heksadesimal rest 435 435 16 = 27, 79%16 = 3 3 3 27 27 16 = 1, 27%16 = 11 11 b 1 1 16 = 0, 1%16 = 1 1 1 0 Det ferdige heksadesimale tallet leser vi så nedenfra og opp i kolonnen Heksadesimal rest. I dette tilfellet er 435 10 = 1b3 16 Det å finne resten ved heltalsdivisjon med 16 er litt komplisert å gjøre i hodet, men med kalkulator er det en smal sak. La oss ta for oss vårt eksempel: Kalkulatoren gir at 435 16 = 27, 1875 Vi kan se bort i fra det etter komma, og regne videre, nå ganger vi 16 med 27, altså 16 27 = 432 Deretter tar vi differansen av det oprinnelige tallet, 435, og produktet i det siste regnestykket, 432, altså 435 432 = 3 Oppskriften blir det samme for alle rundene vi må gjennom. Vi kan trøste oss med at siden vi deler med et relativt stort tall, 16, blir regnestykkene raskt enklere, og vi får heller ikke 10-12 rader som vi kan få med samme teknikken anvendt på binære tall. 4.2 Binære tall I korthet går dette ut på å gjøre metoden for konvertering fra heksadesimale tall til binære tall, bare baklengs. I steden for å gjøre hver enkelt siffer i det heksadesimale tallet om til et firesifret binært tall, gjør vi fire og fire siffer i det binære tallet om til et heksadesimalt siffer. Vi begynner bakerst i det binære tallet, altså til høyre, og velger de fire bakerste sifrene. Deretter pluker vi fire nye siffer, helt til det ikke er flere igjen. Dersom det er færre enn 4 siffer igjen må vi bare fylle ut de manglende sifrene med 0. Ikke misforstå, vi ønsker ikke å snu rundt på sifrene, men å beholde de i samme rekkefølge. Vi skal se på et eksempel, der vi ønsker å gjøre om 101011 2 til heksadesimal. Vi begynner med å dele tallet opp i grupper på fire, vi starter bakerst. Først får vi 1011, deretter 0010 Vi fyller ut de manglende plassene med to ekstra 0-er Rekkefølgen av sifrene er akkurat som før vi begynte. 4

Vi har nå en tabell som ligner den vi hadde da vi konverterte andre veien: Binært tall Heksadesimalt tall Desimalt tall 1011 b 13 0010 2 3 Nå kan vi bare konkatenere de heksadesimale sifrene vi har fått, og vi må igjen passe på at rekkefølgen er det samme som rekkefølgen til de assosierte siffergruppene i det binære tallet. 2 + b = 2b Hvis du synes det er mer logisk å snu tabellen opp ned for å lese ovenfra og nedover, vær så god. Jeg gjør det på denne måten fordi vi alltid skal begynne telling av fire og fire siffer bakfra. 5