Teori og oppgaver om 2-komplement



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 =

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

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

Alle hele tall g > 1 kan være grunntall i et 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

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

Diskret matematikk tirsdag 13. oktober 2015

Kapittel 3: Litt om representasjon av tall

Rekker (eng: series, summations)

MAT1030 Diskret matematikk

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

INF1040 løsningsforslag oppgavesett 7: Tall og geometrier

TDT4105/TDT4110 Informasjonsteknologi grunnkurs:

Representasjon av tall på datamaskin Kort innføring for MAT-INF1100L

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

Rekker (eng: series, summations)

MAT1030 Forelesning 3

Algoritmer og datastrukturer A.1 BitInputStream

TDT4105/TDT4110 Informasjonsteknologi grunnkurs:

Norsk informatikkolympiade runde

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

Kapittel 3: Litt om representasjon av tall

Oppgaver med et odde nummer har fasit bakerst i læreboken. Her er løsningsforslag med mellomregninger for de gitte øvingsoppgavene.

i Dato:

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

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

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

INF1040 Digital representasjon TALL

Konvertering mellom tallsystemer

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2017

Algoritmer og datastrukturer A.1 Filbehandling på bit-nivå

Python: Variable og beregninger, input og utskrift. TDT4110 IT Grunnkurs Professor Guttorm Sindre

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

Reelle tall på datamaskin

INF1040 Oppgavesett 7: Tall og geometrier

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

Norsk informatikkolympiade runde

Mer om representasjon av tall

INF1040 Oppgavesett 1: Tallsystemer og binærtall

Husk å registrer deg på emnets hjemmeside!

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

Forelesning Datatyper Kap 5.2 Instruksjonsformat Kap 5.3 Flyttall App B

Tallregning Vi på vindusrekka

Plan for dagen. Vprg 4. Dagens tema - filbehandling! Strømmer. Klassen FilLeser.java. Tekstfiler

Chapter 6 - Discrete Mathematics and Its Applications. Løsningsforslag på utvalgte oppgaver

Simulering - Sannsynlighet

MAT1030 Diskret Matematikk

Posisjonsystemet FRA A TIL Å

Oppsummering. MAT1030 Diskret matematikk. Oppsummering. Oppsummering. Eksempel

UNIVERSITETET I OSLO

Avsnitt 6.1 Opptelling forts.

UNIVERSITETET I OSLO

En oppsummering (og litt som står igjen)

Algoritmer og Datastrukturer

Norsk informatikkolympiade runde

Ordliste matematikk. Addere (addisjon) Areal. Divisjon. Addere er å "legge sammen" tall.

Løsningsforslag ukeoppg. 3: sep (INF Høst 2011)

Argumenter fra kommandolinjen

Løsningsforslag til regneøving 4

MAT1030 Diskret matematikk

MAT1030 Diskret matematikk

Dagens tema. Dagens temaer hentes fra kapittel 3 i læreboken. Repetisjon, design av digitale kretser. Kort om 2-komplements form

Sprettende ball Introduksjon Processing PDF

MAT1030 Forelesning 2

Matematikk for IT. Prøve 1. Torsdag 17. september Løsningsforslag. 22. september 2015

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

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

UNIVERSITETET I OSLO

TDT4110 IT Grunnkurs Høst 2014

Forelesning 5. Diverse komponenter/større system

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2016

Arbeidshefte Multiplikasjon og divisjon

Matematikk for IT, høsten 2016

Dagens temaer. Architecture INF ! Dagens temaer hentes fra kapittel 3 i Computer Organisation and

KAPITTEL 2 Tall og datamaskiner

INF1000 oppgaver til uke 38 (17 sep 23 sep)

b) Hvis det er mulig å svare blankt (dvs. vet ikke) blir det 5 svaralternativer på hvert spørsmål, og dermed mulige måter å svare på.

Tallet Følg så diagrammet for første siffer, så et fem rillers mellomrom, desimaltegn, mellomrom, andre siffer, mellomrom, tredje siffer osv.

Algoritmer og datastrukturer Vedlegg A.2 BitOutputStream

2 Om statiske variable/konstanter og statiske metoder.

SUBTRAKSJON FRA A TIL Å

INF1400 Kap4rest Kombinatorisk Logikk

TDT4110 IT Grunnkurs Høst 2015

Algoritmer og datastrukturer Kapittel 5 - Delkapittel 5.1

MAT1030 Plenumsregning 3

Kompendium til TOD065 - Diskret matematisk programmering

Læringsmål tall. Prefikser for potenser av Store tall. Kunne prefikser for store tall i. det binære tallsystemet

Algoritmer og datastrukturer Kapittel 1 - Delkapittel 1.8

UNIVERSITETET I OSLO

Læringsmål tall. Kunne prefikser for store tall i. det binære tallsystemet. Forstå ulike prinsipper for representasjon av.

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

Veiledning og oppgaver til OpenOffice Calc. Regneark 1. Grunnskolen i Nittedal

Norsk informatikkolympiade runde

ITPE2400/DATS2400: Datamaskinarkitektur

INF1400. Kombinatorisk Logikk

Dagens temaer. Dagens temaer hentes fra kapittel 3 i læreboken. Oppbygging av flip-flop er og latcher. Kort om 2-komplements form

Realfagsglede VG2 80 minutter

Læringsmål og pensum. Designe et program

Mattespill Nybegynner Python PDF

Transkript:

Høgskolen i Oslo og Akershus Diskret matematikk høsten 2014 Teori og oppgaver om 2-komplement 1) Binær addisjon Vi legger sammen binære tall på en tilsvarende måte som desimale tall (dvs. tall i 10- talssystemet). Vi må imidlertid huske at 0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1 og 1 + 1 = 10, dvs. 0 og 1 i mente. Videre er 1 + 1 + 1 = 11 og det gir 1 og 1 i mente. + 1001101 Vi starter bakerst. Vi får 1 + 1 = 10. Det gir 0 under streken og 1 i mente. Deretter får vi 1 + 1 + 0 = 10. Det gir igjen 0 under streken og 1 i mente. Deretter blir det 1 + 1 + 1 = 11. Det gir 1 under streken og 1 i mente. Osv. Svaret blir slik: Eksempel 2: + 1001101 = 10111000100 11001100110 + 10100110101 - = 101110011011-2) Binær subtraksjon Her kan vi bruke en tilsvarende teknikk som for desimale tall, dvs. vi låner verdier. - 1001101 Vi starter bakerst. Der får vi 0 under streken siden 1 1 = 0. Deretter 1 under streken siden 1 0 = 1, så 0 under streken siden 1 1 = 0. Men så får vi 0 1. Dermed må vi låne 1-eren ved siden av. Men når den flyttes en posisjon mot høyre blir den til en 2-er. Det gir 2 1 = 1 under streken. Osv. Resultatet blir: 1

Eksempel 2: - 1001101 = 10100101010 11001100000-10100111111 - = 100100001-3) Fast bitformat fortegnsbit og 2-komplement Vi kan på samme måte som for desimale tall, bruke et fortegn for å markere at et tall er negativt. Det desimale tallet 21 skrives som 10101 på binærform og dermed kunne 21 skrives som 10101. Men dette er ikke slik det normalt gjøres på en datamaskin. Der brukes det som kalles 2-komplement med fortegnsbit. 2-komplement kan kun brukes når heltall skrives og lagres med et fast antall binære siffer. Hvert siffer er 0 eller 1 og dette kalles biter. Ikke-negative binære tall skrives vanligvis uten ledende 0-er. For eksempel skrives tallet 21 normalt som 10101 på binærform. Men med et fast antall biter, for eksempel 8 biter, blir tallet normalt oppgitt med ledende 0-er. For 21 blir det 00010101. Når vi bruker et fast antall biter kalles den første biten en fortegnsbit. Hvis fortegnsbiten er 1 er tallet negativt og hvis den er 0 er tallet ikke-negativt. Det fører til at det største mulige positive heltallet i et fast 8 biters format er det binære tallet 01111111 og det er tallet 127. Det binære tallet 00000000 representerer tallet 0 og det er verken positivt eller negativt. Tallet 1 skrives som 00000001, osv. Spesielt betyr dette at alle de positive tallene fra og med 1 til og med 127 vil kunne skrives i et fast 8 biters format. Hvis fortegnsbiten er 1 så er tallet negativt. La oss som eksempel bruke 8 biter som det faste antallet biter. Da vil 10110100 være et negativt tall. Men hvilket tall? Flg. regel viser hvordan vi kan finne ut det: 1. Gitt et negativt binært tall n med 8 binære siffer. Dermed er første bit lik 1. 2. Finn komplementet k til n. (Det betyr å la alle 1-ere bli 0-er og alle 0-er bli 1-ere) 3. Finn m = k + 1. Bruk vanlig binær addisjon. 4. Tallet n er det samme som m. 1. Gitt n = 101101002 2. Komplementet til n er k = 010010112 3. m = k + 1 = 010010112 + 1 = 010011002 = 76 4. n = 101101002 er det samme som 76 2

Eksempel 2: 1. Gitt n = 111111112 2. Komplementet til n er k = 000000002 3. m = k + 1 = 000000002 + 1 = 000000012 = 1 4. n = 111111112 er det samme som 1 Eksempel 3: 1. Gitt n = 100000002 2. Komplementet til n er k = 011111112 3. m = k + 1 = 011111112 + 1 = 100000002 = 128 4. n = 100000002 er det samme som 128 Vi kan også gå den omvendte veien. Dvs. vi starter med et ikke-negativt tall og ønsker å finne de binære sifrene til det samme tallet, men med motsatt fortegn. Da er reglen slik: 1. Gitt et ikke-negativt binært tall n med 8 siffer, dvs. første bit er 0. 2. Finn komplementet k til n. 3. Finn m = k + 1. Bruk vanlig binær addisjon. 4. Tallet m er det samme som n. Eksempel 4: 1. Gitt n = 10810 = 011011002 2. Komplementet til n er k = 100100112 3. m = k + 1 = 100100112 + 1 = 100101002 4. 100101002 er det samme som 108 Oppgaver Oppgave 1. I denne oppgaven ser vi bare på positive binær tall. Da brukes ikke fortegnsbit og ingen tall har ledende 0-er. Gitt de binære tallene a = 1011 1000, b = 110 0111 og c = 1000 0000. a) Bruk binær addisjon slik som beskrevet over til å finne a + b, a + c og b + c b) Bruk binær subtraksjon slik som beskrevet over til å finne a b, a c, a 1, b 1 og c 1 c) Windows 7 inneholder en kalkulator (Alle programmer Tilbehør). Sett den til å være en programmeringskalkulator (gå inn i menyen Vis/View). Der kan du regne med binær siffer. Løs også oppgavene i a) og b) ved hjelp av kalkulatoren. Da bør du helst få samme svar. 3

Oppgave 2. I denne oppgaven skal vi bruke et fast antall biter på 8, la første bit være fortegnsbit og bruke 2-komplement til negative tall. a) Hvordan skrives flg. heltall (i 10-tallssystemet) på binærform med hensyn på dette bitformatet? i) 0, ii) 10, iii) 100, iv) 1, v) 10, vi) 100? b) Hvilke heltall (i 10-tallssystemet) representerer flg. bitsekvenser? i) 01010101 ii) 10101010 iii) 11111111 iv) 10000000 v) 01111111 c) Legg sammen (binæraddisjon) flg. par av bitsekvenser: i) 01001101 og 00110011 ii) 10101010 og 01010101. Oppgave 3. I denne oppgaven skal vi bruke et fast antall biter på 32, la første bit være fortegnsbit og bruke 2-komplement til negative tall. Dette svarer til svarer til datatypen int i Java. a) Hvordan skrives flg. heltall (i 10-tallssystemet) på binærform med hensyn på dette bitformatet? i) 1, ii) 2, iii) 3 b) Hvilke heltall (i 10-tallssystemet) representerer flg. bitsekvenser? i) 10000000000000000000000000000001 ii) 11111111111111111111111111111000 Oppgave 4. Klassen Integer i Java inneholder metoden tobinarystring. Den konverterer heltall til en bitsekvens i form av en String. Den kan for eksempel brukes slik: String s = Integer.toBinaryString(1234); String t = Integer.toBinaryString(-5678); System.out.println(s); System.out.println(t); Utskrift: 10011010010 11111111111111111110100111010010 Metoden fjerner ledende 0-er hvis heltallet er positivt. Bruk teknikken over til å løse Oppgave 3a). 4

Oppgave 5. Flg. programkode gjør slik som i regnstykket i Eksempel 4 i Avsnitt 3: int n = 108; int k = ~n; // komplementet til n int m = k + 1; System.out.println(m); a) Lag et Java-program der dette inngår. Hva bli utskriften? b) La n = 108. Hva blir utskriften nå? c) La n = 2147483648. Hva blir utskriften nå? Hva er det som skjer? Løsningsforslag til oppgavene Oppgave 1. a) 1 0001 1111, 1 0011 1000, 1110 0111 b) 101 0001, 11 1000, 1011 0111, 110 0110, 111 1111 Oppgave 2. a) i) 0 = 00000000 ii) 10 = 00001010 iii) 100 = 01100100 iv) 1 = 11111111 v) 10 = 11110110 vi) 100 = 10011100 b) i) 85 ii) 86 iii) 1 iv) 128 v) 127 c) i) 128 ii) 1 Oppgave 3. a) i) 11111111111111111111111111111111 ii) 11111111111111111111111111111110 iii) 11111111111111111111111111111101 b) i) 2147483647 ii) 8 5