540 likes | 738 Views
Digital Representasjon. Frode Eika Sandnes. Læringsmål. Hva er informasjon? Hvordan lagres informasjon i datamaskinen? Hvordan og hvorfor komprimere informasjon? Hvordan og hvorfor kryptere informasjon?. Den fundamentale informasjonsbiten - bit.
E N D
Digital Representasjon Frode Eika Sandnes
Læringsmål • Hva er informasjon? • Hvordan lagres informasjon i datamaskinen? • Hvordan og hvorfor komprimere informasjon? • Hvordan og hvorfor kryptere informasjon?
Den fundamentale informasjonsbiten - bit • En bit er en verdi som kan ha to tilstander, strøm av eller strøm på. • Ofte beskrives disse tilstandene som 0 eller 1, eller sannt eller usannt • Et annet navn for en bit-verdi er boolean • Bits er fundamentet for all informasjon som representeres i en datamaskin.
Dette er en bit Slå på Slå av
Byte – en samling med 8 bits • Historisk sett har det vært praktisk å organisere bits i grupper på 8 bits. • En gruppe på 8 bits kalles en byte. • Minnet i datamaskinen er ofte organisert i bytes. • Hver byte har en adresse. Vi kan be om å se en byte som ligger på en adresse. Eller vi kan bestemme hva som skal ligge på en addresse. • Addressen er et tall som beskriver hvor i minnet byten ligger.
Addressen til en byte Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7 Byte 8 Byte 9
Words – grupper på en eller flere bytes • Vanligvis er en word på 2 bytes, dvs 16 bits, eller 4 bytes, dvs 32 bits.
Bytes og words kan representere mange tilstander • En bit representerer 2 tilstander • Et word med n bits kan representere 2n tilstander, e.g. En byte 28 = 256 verdier, en 2-byte word 216 = 65356 • Dvs alle kombinasjonene av bitsene i word’en av og på. • 000 • 001 • 010 • 011 • 100 • 101 • 110 • 111
Bokstaver og tegn (characters) • US-ASCII tegnsett beskrives med bytes på 8 bits. • Vi har derfor 256 tegn, hvor hvert tegn har sin unike kode eller bit mønster • A er 01000001 • B er 01000010 • C er 01000011 • Merk at A og a har forskjellige koder • Kinesisk bruker bla 2-bytes word representasjon i stedet, med mulighet for 65356 tegn.
Tekststrenger (Strings) • ASCII strenger er sekvenser med characters (eller bytes) • ABC = 01000001 01000010 01000011 • Lengde på strengen • Nullterminering (C/C++) • Man hekter på tegnet NULL (00000000) på slutten av strengen • Ikke nullterminering (Java) • Man bruker en annen måte å beksrive slutten på strengen, for eksempel lengde
Lagring av strenger • Nullterminering • Lengde frodeØkirstenØgeirØmark 5frode7kirsten4geir4mark
Heltall (integere) • Vi kan også bruke bytes eller words til å representere heltall • 00000000 = 0 • 00000001 = 1 • 00000010 = 2 • 00000011 = 3 • 00000100 = 4 • 00000101 = 5 • 00000110 = 6 • 00000111 = 7 • Med n bits kan vi representere 2n tall • Binærtall kan legges sammen og trekkes fra på samme måte som du har lært på grunnskolen for titallsystemet.
Hva skjer hvis du legger samen to store tall? • Tenk deg at du representerer to tall a og b med bytes, hvor a = 200 og b 220. • Vi får da en overflow, fordi svaret (420) ikke kan representeres med en byte som kun kan representere max 255. Man kan få det feilaktige svaret av 164 hvis feilen ikke oppdages. • Hva skjer hvis banken bruker for få bits og du setter inn for mange penger. Da kan noen av pengene ”forsvinne”.
Negative tall • 2’s kompliment. En koding av tall som gjør at man lett kan bruke artmetiske operatsjoner (legge sammen og trekke fra) uten å bekymre seg for fortegn. • Positive tall er representert direkte. • Negative tall • Strart med den positive versionen (00010001 = 17) • Flip alle bits (11101110) • Legg til 1 (11101111 = -17) • Husk at antall tilstander må foredels likt på negativ og positiv side av tallskalaen. E.g. En byte gir tall fra -127 til 127, i stedet for 0 til 255.
Pass på!!! • En bank bruker 2’compliment for innskudds og lånekontoer. • Tenk deg banken bruker for få bits. • Hvis du setter inn for mange penger kan du risikere å få et veldig stort lån (ved overflow). • Hvis du låner for mange penger kan du risikere å bli eier av veldig mange penger og få lånet strøket (underflow).
Flyttall • Flyttall er en fellesbetegnelse for alle tall ”som har komma” • 2.7 • 3.141592654 • 1/3 • Flyttall er en tilnærming og ikke en eksakt representasjon. • En dynamisk representasjon som likner på vitenskapelig notasjon, i.e. • 3.4x10-5
Flyttall • Et flyttall består av • mantissa M • eksponent E • fortegn F (1 bit) • Tallet er representert som • Tall = (-1)FMBE • B er basen og er gitt implisitt
Flyttall • Et word med n bits kan derfor deles i to biter, en for mantissa og en for eksponent • Mantissaen avgjør nøyaktigheten av tallene. Mange bits gir god nøyaktighet • Eksponenten avgjør størrelsen på tall som skal representeres. Mange bits dekker et stort tallområde • Man må balansere tilgjengelig bits mellom mantissa og eksponent • IEEE standard 754 er mest vanlig. Fortegns bit eksponent mantissa
Flyttall er unøyaktige • Hva skjer hvis vi legger sammen et veldig stort og et veldig lite tall • Svaret vil være lik det største tallet, fordi representasjonen ikke kan registrere det lille tallet i skyggen av det store. • God regel: For å sikre mer nøyaktige utregninger bør tall summeres i økende rekkefølge.
Er det et null? • Hvis du sjekker om et flyttall er null (0) må du være forsiktig. • Eksakt null eksisterer ikke. • Vi bruker derfor en grenseverdi (epsilon), et velig lite tall, for eksempel 0.0000001. • Hvis tallet er mindre enn epsilon og større enn –epislon er tallet null. • Dette gjelder også sammenlikning med andre tall. • Mange programmerere gjør feil her.
Multimedia • Lyd • Bilde • Video
Lyd • Lydbølger spres som bølger igjennom luft i form av fortetninger. • Lydbølger kan fanges av mikrofoner og representeres som en tidsserie som beksriver lufttrykket i lydbølgen.
Digitalisering • Lydbølgen er analog, dvs kontinuerlig • Vi kan kun representere diskrete verdier digitalt. • Digital representasjon er derfor en tilnærming av det originale signalet • Selv om det digitale signalet er fysisk forskjellig fra det analoge så vil øret oppfatte det som ganske likt (persepsjon)
Digitalisering Disse målingene kan representeres som en rekke tall, i.e. Bytes.
Sampling rate • Hvor ofte vi måler signalet • Beskriver den øverste hørbare frekvensen • Dynamisk bredde • Hvor nøyaktig vi tar hver måling • Beskriver hvor mye detaljer vi kan høre.
Aliasing effekter Nyquist’s lov • For å fange opp en frekvens må vi sample med dobbelt så stor frekvens. • Sammenlikn med å steke pizza, hvor ofte må du kikke igjennom ovnsdøren før den er ferdig? • Hvir du gjør det for sjelden så blir pizzaen brent • CD kvalitet er 44.1 KHz, fordi mennesker ikke kan høre frekvenser over 20 KHz (44.1 er mer enn dobbelt så mye som 20)
Psykoakustisk koding • PCM (pulse coded modulation), for eksempel wav-filer, tar stor plass fordi hele bølgeformen er representert • Moderne lydformater som for eksempel mp3, tar mye mindre plass. • Disse er basert på psykoakustisk koding. Dette er en avansert teknikk som gjør at man kun lagrer informasjon i lydsignalet som er hørbart for mennesker. Annen informasjon blir ignorert. • For eksempel, to toner med lik frekvens, der en har høyt volum og en har lavt volum – vi lagrer kun informasjonen om den med høyt volum, siden den overdøver den med lavt volum.
Bilder • Bilder representeres med pixler, eller en matrise med punkter. • I et svart/hvitt bilde er hvert punkt en bit. • I et bilde med gråtoner er hvert punkt en byte • I et fargebilde er hvert punkt et eller flere bytes.
Bilder (raster) 00011000 = 24 00111100 = 60 01110110 = 118 11111110 = 254 11111111 = 255 01110000 = 112 00111110 = 62 00011000 = 24
Representere farger • RGB – Rød, Grønn og Blå • Spesifisere en farge med å bruke en byte for hver av fargende, totalt 3 bytes eller 24 bits. • Hver farge kan ha 256 verdier, og totalt kan man representere 256 x 256 x 256 mulige farger • To strategier • Farge per pixel • Palette
(0,255,0) (0,0,0) (0,255,255) (255,255,0) (255,255,255) (255,0,0) (0,0,255) (255,0,255)
Farge per pixel (255,0,0) (0,0,255) (0,0,255) (0,0,255) (256,256,0) Dette tar mye plass
Palette Vi lagrer en fargekode Ikke fargeverdien 2 3 1 Paletten inneholder fargeverdiene Palett: 1 = (0,0,255) 2 = (255,0,0) 3 = (255,255,0)
Video • Video er ganske enkelt visning av flere bilder i sekvens. • Hvis man viser ca 25 bilder i sekundet i sekvens ser bevegelsene naturlig ut. • Problemstillingen er at bilder tar stor plass, og mange bilder (25 per sekund) tar veldig mye plass. • Video dreier seg derfor i stor grad om kompresjon.
Komprimering • Komprimering (compression) brukes for å minske lagringsplassen for informasjon. • Kan derfor presse mer informasjon inn på tilgjengelig plass. • To hovedtyper • Lossless kompresjon • Kompresjonen medfører ikke informasjonstap • tekstfiler • Lossy kompresjon • Kompresjonen medfører informasjonstap, men det er vanligvis ikke merkbart • Lyd, bilde og video (multimediainnhold)
Kompresjon av tekst • Tekstkompresjon er vanligvis basert på det fenomenet av bokstaver forekommer med ujevn sannsynlighet. • E 12% • A 8% • N 7% • … • Z 0.1%
Tekstkompresjon • Tekst komprimeres ved å erstatte ASCII koden med en annen binærkode • Tegn med høy forekomst får korte koder • Tegn med lav forekomst får lengre koder • Vanligvis er alle ASCII tegn en byte (8-bits), men vi kan balansere tegnene annerledes ved å benytte for eksempel et Huffman tre. • Høyt forekommende tegn er kortere enn 8-bits • Lavt forekommende tegn kan være lengre enn 8-bits • Summen av alt blir totalt færre bits, og vi oppnår kompresjon.
Kompresjon av lyd (delta-koding) • For eksempel au filer (sun) • Prinsippet er basert på fenomenet at nivået varierer lite mellom hver sample. • I stedet for å lagre selve samplet lagrer vi forskjellen mellom to sampler (differansen) – eller delta’en som den også kalles.
Delta koding • For eksempel: Vi har bølgeformen • 33, 34, 35, 37, 38, 37, 35, 25 • Differansen mellom tallparrene er: • 1,1,2,1,-1,-2,-10 • Hvis vi vet startverdien og differansene så kan vi restaurere det orginale signalet. • Differansene tar mindre plass i minnet enn selve tallene. • Delta koding kan også brukes til å lagre andre typer tidsserier og ikke bare lyd (EKG signaler, aksjekurser etc).
Kompresjon av bilder • Ingen kompresjon • Raster – e.g. Windows BMP format • Lossless • Run length encoding (Fax maskiner) • gif • Lossy • Kompliserte algoritmer basert på menneskets persepsjon av bilder. Fjerner detaljer mennesker ikke legger merke til eller kan skille. • jpeg
Run legnth encoding 3 hvie på rad 2 svarte på rad 3 hvite på rad Koding er derfor: 3,2,3 2,4,2 1,3,1,2,1 0,7,1 0,8 1,3,4 2,5,1 3,2,3 Forbedret med linje-wrap: 3,2,5 4,3 3,1,2,1 7,1 8 1,3,6 5,4 2,3 Vi bruker derfor mindre plass til å lagre.
300 x 300 100 x100 30 x 30
Kompresjon av video • Hovedprinsippet bak videokompresjon er at over tid er det lite variasjon i farge for enkelte pixler. • For eksempel på en nyhetssending er det mest endring i bildet ved munnen og ansiktet på nyhetsreporteren • Dette kan kombineres med teknikker for bildekompresjon og behoved for lagringskapasitet kan reduseres sterkt