Albregtsen og Skagestein: Digital representasjon Løsningsforslag til kapittel 2 Representasjon av tegn og tekster

Like dokumenter
INF1040 Oppgavesett 3: Tegn og tekst

Læringsmål. INF1000: Forelesning 12. Hovedkilde. Kunne binærtall og heksadesimale tall og konvertering mellom ulike tallsystemer: Titallsystemet

Tegn og tekst. Posisjonssystemer. Logaritmer en kort repetisjon. Bitposisjoner og bitmønstre. Kapittel August 2008

INF1040 Digital representasjon Oppsummering

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.

TDT4105/TDT4110 Informasjonsteknologi grunnkurs:

Tegn og tekst. \yvind og ]se N{rb}? Læreboka kapittel August Institutt for informatikk 29. august 2007.

Oppsummering 2008 del 1

Oppsummering 2008 del 1

INF1040 Oppgavesett 6: Lagring og overføring av data

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.

Unicode. Unikt vakkert eller unisont håpløst? En vandring gjennom tegnkodingens historie. Dag Lamgmyhr, Ifi/UiO Ark 1 av 23

Digital representasjon

Digital representasjon

TDT4105/TDT4110 Informasjonsteknologi grunnkurs:

Digital representasjon

Tegn og tekst. \yvind og ]se N{rb}? Læreboka kapittel 2. Institutt for informatikk Gerhard Skagestein 30. august 2006.

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

INF 1000 høsten 2011 Uke 11: 2. november

INF1040 Oppgavesett 1: Tallsystemer og binærtall

INF 1000 høsten Innhold uke 11. Digital representasjon av tekster, tall, former,

Konvertering mellom tallsystemer

Digital representasjon

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 =

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

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

INF1040 løsningsforslag oppgavesett 7: Tall og geometrier

Oppgaver til kapittel 19 - Kryptering og steganografi

INF1400 Kap 1. Digital representasjon og digitale porter

Ordliste 2. Byte (byte) En streng på 8 biter som behandles som en enhet.

MAT1030 Forelesning 2

Diskret matematikk tirsdag 13. oktober 2015

MAT1030 Diskret Matematikk

MAT1030 Forelesning 3

Kapittel 3: Litt om representasjon av tall

Læringsmål og pensum. Tekststrenger Læringsmål Skal kunne forstå og programmere med tekststrenger. Pensum Matlab, Chapter 7

Vektorer. Dagens tema. Deklarasjon. Bruk

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

Dagens tema INF1070. Vektorer (array er) Tekster (string er) Adresser og pekere. Dynamisk allokering

INF1040 Oppgavesett 7: Tall og geometrier

UNIVERSITETET I OSLO

IT1101 Informatikk basisfag 4/9. Praktisk. Oppgave: tegn kretsdiagram. Fra sist. Representasjon av informasjon binært. Ny oppgave

MAT1030 Diskret matematikk

MAT1030 Diskret matematikk

Verdens korteste grunnkurs i Excel (2007-versjonen)

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

Matematikk for IT, høsten 2016

a) Tala i tabellen under skal grunntalskonverterast. Alle rutene i tabellen skal fyllast ut. Vis framgangsmåten. BIN OCT HEX DEC

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

MAT1030 Forelesning 10

MAT1030 Diskret Matematikk

Dagens tema INF1070. Vektorer (array-er) Tekster (string-er) Adresser og pekere. Dynamisk allokering

Kapittel 5: Mengdelære

UNIVERSITETET I OSLO

Datamaskinen LC-2. Dagens tema. Tall i datamaskiner Hvorfor kan LC-2 lagre tall i intervallet ? Hvorfor er det akkurat celler i lageret?

Dagens tema. Datamaskinen LC-2 En kort repetisjon. Binære tall Litt om tallsystemer generelt. Binære tall. Heksadesimale og oktale tall

Eksamen i INF 1040, 5. desember Det matematisk-naturvitenskapelige fakultet. Ditt kandidatnr: DETTE ER ET LØSNINGSFORSLAG

1 Potenser og tallsystemer

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

UNIVERSITETET I OSLO

Husk å registrer deg på emnets hjemmeside!

Kapittel 5: Mengdelære

MAT1030 Diskret Matematikk

INF1040 Oppgavesett 14: Kryptering og steganografi

Offentlig utvalg for punktskrift, OUP Norsk standard for 8-punktskrift punktskrift 24. oktober 2004 sist endret

INF1020 Algoritmer og datastrukturer GRAFER

TDT4105 Informasjonsteknologi grunnkurs: Uke 42 Strenger og strenghåndtering

ITGK - H2010, Matlab. Repetisjon

Lab. D2 Datateknikk TELE1004-A 13H HiST-AFT-EDT

Dagens tema. Mer MIPS maskinkode. Maske-operasjoner Skift-operasjoner Lesing og skriving Pseudo-instruksjoner Mer om funksjonskall Registeroversikt

UNIVERSITETET I OSLO

INF1040 Oppgavesett 2: Nettsider og XHTML

UNIVERSITETET I OSLO

IN 147 Program og maskinvare

UNIVERSITETET I OSLO

5 E, B (16) , 1011 (2) Danner grupper a' fire bit , (2) Danner grupper a' tre bit 1 3 6, 5 4 (8)

Læringsmål og pensum

INF Algoritmer og datastrukturer

Overordnet maskinarkitektur. Maskinarkitektur zoomet inn. I CPU: Kontrollenheten (CU) IT1101 Informatikk basisfag, dobbeltime 11/9

Forelesningsnotater SIF 5021 Algebra og tallteori V-02. Et kort innføring med eksempler fra kodeteori

Modell: en binær symmetrisk kanal. binær: sendes kun 0 eller 1

1 Potenser og tallsystemer

Generell induksjon og rekursjon. MAT1030 Diskret matematikk. Generell induksjon og rekursjon. Generell induksjon og rekursjon.

Generelle Tips. INF Algoritmer og datastrukturer. Åpen og Lukket Hashing. Hashfunksjoner. Du blir bedømt etter hva du viser at du kan

INF1040 Digital representasjon

Oppgave: BOW Bowling. Regler for Bowling. norwegian. BOI 2015, dag 1. Tilgjengelig minne: 256 MB

UNIVERSITETET I OSLO

INF1040 Digital representasjon TALL

Mer om representasjon av tall

INF Algoritmer og datastrukturer

Dagens plan. INF Algoritmer og datastrukturer. Koding av tegn. Huffman-koding

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

Dagens tema: INF2100. Utvidelser av Minila array-er. tegn og tekster. Flass- og Flokkode. prosedyrer. Prosjektet struktur. feilhåndtering.

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

MAT1030 Diskret Matematikk

Norsk informatikkolympiade runde

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

Transkript:

Albregtsen og Skagestein: Digital representasjon Løsningsforslag til kapittel 2 Representasjon av tegn og tekster Skulle du finne feil i et løsningsforslag, vennligst rapporter dette til ragnhilk@ifi.uio.no Oppgave 1 Hvorfor er kodingssystemer som skifter mellom to (eller flere) plan som Baudot mer sårbare overfor overføringsfeil enn systemer uten slik skifting? Problemet er at en feil i bare en bit er nok for at de viktige LTRS og FIGS-tegnene blir feiltolket som noe annet, og at store deler av den påfølgende teksten dermed blir feiltolket. Oppgave 2 a. Hva er ASCII-representasjonen for tekststrengen "Digital" dersom vi spanderer en byte for hvert tegn? Skriv ned både i binær- og heksadesimal-notasjon. Bruk ASCII-tabellen på side 18 i læreboka. Heksadesimal 0x 44 69 67 69 74 61 6C, binær 01000100 01101001 01100111 01101001 01110100 01100001 01101100. b. Hva er ASCII-representasjonen for tekststrengen "Digital" dersom vi pakker tett i så mange bytes som vi trenger? Skriv ned både i binær- og heksadesimal-notasjon. Her må vi sløyfe den ledende 0 i alle tegnene: 1000100 1101001 1100111 1101001 1110100 1100001 1101100 Grupperer 4 og 4 biter bakfra: 1 0001 0011 0100 1110 0111 1101 0011 1101 0011 0000 1110 1100 Fyller på med ledende 0 er slik at det blir et helt antall bytes: 0000 0001 0001 0011 0100 1110 0111 1101 0011 1101 0011 0000 1110 1100 I heksadesimal: 0x 01 13 4E 7D 3D 30 EC Merk at vi her egentlig ikke fikk noen gevinst ved å pakke tett, da det totale antallet bytes ble det samme. Det skyldes selvfølgelig at vi ved å fjerne en innledende 0 fra sju tegn, bare sparer 7 bit. For å spare en hel byte måtte vi ha hatt minst åtte tegn opprinnelig, slik at vi sparte minst 8 bit totalt. c. Anta at du allerede har ASCII-representasjonen for tekststrengen "Digital" (en byte per tegn) og ønsker ASCII-representasjonen for tekststrengen "DIGITAL". Hvilke endringer må gjøres i representasjonen? (Erstatte representasjonen for "igital" med representasjonen for "IGITAL" er naturligvis et korrekt svar. Men kan dette gjøres på en enkel måte ved å fikse litt på bitmønsteret?) heksadesimal 0x 44 49 47 49 54 41 4C. I ASCII er de små bokstavene hex 20 større enn de store det er altså bare å trekke hex 20 fra hvert av de små tegnene hvilket er det samme som å vippe bit 6 bakfra fra 1 til 0. d. Hva er ASCII-representasjonen for tekststrengen "13" med en byte per tegn? 0x 31 33, binær 00110001 00110011 Digital representasjon løsningsforslag kapittel 2 Side 1

Oppgave 3 Av ukjente grunner har noen bestemt seg for å utvide standard ASCII ved å representere Æ, Ø, Å og æ, ø, å ved hjelp av escape-teknikken på følgende måte: Æ representeres som ESC AE Ø representeres som ESC O/ Å representeres som ESC AA æ representeres som ESC ae ø representeres som ESC o/ å representeres som ESC aa a. Hvorfor trengs det ikke noe avsluttende escape-symbol i denne representasjonen? Fordi escape-sekvensen er av fast lengde, nemlig to tegn dermed vet vi når den avsluttes. b. Hvordan ville du representere selve ESC-tegnet, hvis dette av en eller annen grunn skulle opptre som vanlig tegn, ikke som escape-symbol? Her må vi også bruke escape-teknikken, et nærliggende forslag er Esc Esc Esc. c. Hvorfor tror du man unnlot å ta dette prinsippet i bruk da ASCII-tegnsettets utilstrekkelighet for skandinaviske språk begynte å bli et problem? Programvaren var den gangen ikke innstilt på å bearbeide tegn av variabel lengde. Dessuten var det tekniske begrensninger i skjermer og skrivere. Oppgave 4 Hvis du sender SMS-er med GSM 03.38 vil du normalt få plass til 160 tegn i meldingen. Men hvis du har for eksempel euro-tegn eller hakeparenteser i meldingen, vil det bare bli plass til noe færre tegn. Hvorfor? Fordi disse tegnene ikke finnes i basis 03 38, men representeres med et escape-tegn pluss et annet tegn, altså 14 biter. Oppgave 5 a. Hvor mange biter brukes pr tegn i Unicode UTF-32? UTF-16? UTF-8? UTF-32: 32. UTF-16: 16 eller 32 (det siste for surrogatpar), UTF-8: Fra 8 (for ASCII delmengden) til 32, avhengig av tegnet. b. Er representasjonen for bokstaven "a" den samme i Unicode UTF-8 som i ISO 8859-15? Ja. UTF-8 er kompatibel med 8 bit ASCII, dvs. 8859-15. c. Er representasjonen for bokstaven "å" den samme i Unicode UTF-8 som i ISO 8859-15? Nei. å inngår ikke i ASCII-tegnsettet, og kodes helt annerledes (med to bytes) d. Glyfen"Å" kan i Unicode oppfattes som tre ulike tegn eller tegnkombinasjoner. Hvilke? Som det forhåndssammensatte tegnet Å, som tegn for enheten Ångstrøm, og som A med diakritisk merke. Heksadesimalt henholdvis: 0x00C5, 0x212B, 0x0041 0x030A Digital representasjon løsningsforslag kapittel 2 Side 2

Oppgave 6 Skriv en algoritme som finner n'te tegnet i en a. Unicode UTF-8-fil Hent neste byte Hvis byten begynner med 1, tell antall 1'ere og hent like mange byte Hvis byten begynner med 0, gjør ingenting b. Unicode UTF-16-fil Hent det neste byteparet Hvis byteparet begynner med 110110, hent neste bytepar (som skal begynne med 110111) Ellers, gjør ingenting c. Unicode UTF-32-fil Hent de neste fire byte Algoritmen kan formuleres i pseudo-kode, f.eks. slik: Hent neste byte Hvis byten inneholder xxx, gjør dette... Hvis byten inneholder yyy, gjør dette... Ellers, gjør dette... Oppgave 7 a. I følgende utsnitt av en Unicode UTF-8 fil er noen av bytene åpenbart ukorrekte. Hvilke, og hvorfor? 0x 41 C3 98 41 C3 41 41 C3 98 98 41 0x 41 C3 98 41 C3 41 41 C3 98 98 41 // vogn som ikke begynner med 10, ikke-vogn som begynner med 10. b. I følgende utsnitt av en Unicode UTF-16 fil er noen av bytene åpenbart ukorrekte. Hvilke, og hvorfor? 0x 00 41 D8 00 DC 0F 00 41 D8 00 00 41 DC 0F 00 41 DC 0F D8 00 00 41 0x 00 41 D8 00 DC 0F 00 41 D8 00 00 41 DC 0F 00 41 DC 0F D8 00 00 41 // surrogatpar uten partner, par snudd feil vei Digital representasjon løsningsforslag kapittel 2 Side 3

Oppgave 8 Vis at bitmønsteret for "Byte order mark" (BOM) i Unicode UTF-8 er 0x EF BB BF. Kodepunktet for BOM er 0x FEFF = 1111 1110 1111 1111, dvs. 16 biter, altså et UTF-8-tog med tre vogner: 1110 xxxx 10xx xxxx 10xx xxxx. Setter inn bitmønsteret: 1110 1111 1011 1011 1011 1111 = 0x EF BB BF. Oppgave 11 Tegnet for g-nøkkel har kodepunkt Ux1D11E i Unicode. Hvordan representeres dette i a. UTF-32? Kodepunktet er altså 0x1D11E = 0001 1101 0001 0001 1110 I UTF-32 fyller vi på med 0 ere foran til det blir totalt 32 bit: 0000 0000 0000 0001 1101 0001 0001 1110 = 0x 00 01 D1 1E b. UTF-16? Dette kodepunktet ligger ikke i BMP, og trenger altså mer enn 16 bit. Det betyr at vi i UTF-16 må bruke surrogatpar. Trekker først fra 0x10000 (som legges til når man skal konvertere fra UTF-16 og tilbake til kodepunkt) og får: 0xD11E = 1101 0001 0001 1110 Disse bitene skal settes inn i surrogatparene high = 110110xx xxxxxxxx low = 110111xx xxxxxxxx Starter bakfra, og fyller inn bitene i low så langt det er mulig, og fortsetter deretter i high: high = 11011000 00110100 = 0x D8 34 low = 11011101 00011110 = 0x DD 1E c. UTF-8? Vi har 17 biter (se punkt a), og trenger da et UTF-8 tog med fire vogner: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx Fyller inn bakfra og får: 11110000 10011101 10000100 10011110 = 0x F0 9D 84 9E Oppgave 12 Hvilke(t) kodepunkt tilsvarer bitmønsteret 11011000 10011111 11011100 10111000 a. i UTF-16? Vi ser fra bitmønsteret at dette må være et surrogatpar med high = 11011000 10011111 low = 11011100 10111000 Ser bort fra bitene som angir at dette er surrogatpar, og legger de resterende bitene etter hverandre med high først: 0010 01111100 10111000 = 0x 2 7C B8 Legger til 0x10000 (for å få et kodepunkt som ligger i plan 1-17) og får kodepunktet Ux37CB8 b. i UTF-8? Første byte starter med 110, noe som angir at dette er et tog med to vogner, altså at første tegn er representert med to byte. Neste byte starter med 10, og er altså en vogn. Ser bort fra de ekstra representasjonsbitene (110 og 10) og får 11000011111. Grupperer fire og fire biter bakfra, og fyller på med 0 er foran: 0110 0001 1111 = Ux61F Digital representasjon løsningsforslag kapittel 2 Side 4

Neste (tredje) byte starter også med 110, og vi har igjen et tog med to vogner. Dette passer med at fjerde (og siste) byte starter med 10, og altså er en vogn. Ser bort fra representasjonsbitene og får 11100111000. Grupperer og får: 0111 0011 1000 = Ux738 Digital representasjon løsningsforslag kapittel 2 Side 5