Guider > Appendix: Data

Fortfarande under konstruktion / aliceochbob.se 11 juli 2008

Appendix: Data

De teoretiska sektionerna på den här sajten väldigt mycket om data. Det är absolut nödvändigt att ha en intuitiv förståelse om vad data är för något för att på ett bra sätt kunna följa de avancerade guidenerna på denna sajt.

Data

För en dator är data enbart siffror. En mp3 är siffror, ett fotografi (jpeg) är siffror, ett textdokument är siffror. Datorprogram kan tolka siffrorna. En bildläsare kan exempelvis ta siffrorna och visa en bild av dem. Webbläsaren tar siffrorna som är den här texten och presenterar den för dig (läsaren) på ett användarvänligt sätt.

Den minsta datan är en bit. En bit är antingen 0 eller 1. En bit kan representera väldigt mycket olika information. Winamp kanske tolkar en specifik bit i mp3-data som att låten ska spelas upp i stereo istället för mono. Ett bildvisningsprogram kanske representerar en svart/vit pixel med en bit. För datorn är det dock ingen skillnad på en stereo/mono-bit eller en pixel-bit.

Två bits kan representera fyra olika värden (00, 01, 10, 11). I mp3-data kanske två specifika bits representerar vilken sample rate musiken har (48 KHz, 44 KHz, 22 KHz eller 8 KHz). I en jpeg kanske två specifika bits hjälper bildvisaren att tolka fem efterföljande bits, som betyder något viktigt.

I moderna datorer är 8 stycken bits ett speciellt värde. 8 bits kallas för en byte och kan representera 256 olika värden, från värdet 0 (00000000) till 255 (11111111). En byte kan representera väldigt olika sorters data. I bilddata kanske en byte representerar styrkan av den röda färgen i en pixel. I textdokument kanske en viss byte motsvarar bokstaven/tecknet ’A’ (däremot kanske japanska/kinesiska tecken behöver två eller tre bytes, eftersom det finns fler än 256 sådana tecken).

Jag vill att ni ska göra följande: Öppna en texteditor, exempelvis Notepad/Anteckningar. Öppna nu en mp3-fil i texteditorn. Vad ni kommer se är mp3-datan representerad som tecken. När samma fil öppnas i Winamp kommer mp3-datan istället representeras som ljud.

Ovan: representation av mp3 som tecken.

Ovan: representation av samma mp3 som ljudvågor.

”Problemet” med data är att det är ett abstrakt koncept, precis som siffror. Siffran fyra har massvis med olika representationer: fyra äpplen, symbolen/tecknet 4, romerska symbolen IV, ordet ”fyra”. Data är också ett abstrakt koncept och när man arbetar med data arbetar man alltid med representationer av datan.

Låt säga att mp3-data börjar med följande fyra bytes: 255, 251, 144, 100, ...

Till skillnad från tecknena som visades i texteditorn, eller musiken som spelades i mediaspelaren, kan det tyckas att datan ovan är ganska ”ren”. Det är den, på ett abstrakt plan. Men de konkreta siffrorna ovan är ju i sin tur bara en textrepresentation som är uppritad av webbläsaren, i detta fall med symbolerna ”2”, ”5”, etc.

Det absolut vanligaste sättet att representera ”ren” data är hexadecimalt. Detta är en konvention som är väldigt gammal. Det decimala talsystemet använder siffrorna 0123456789 och större tal kan skapas genom att skriva dessa i följd. Det hexadecimala talsystemet använder istället siffrorna 0123456789ABCDEF där A hexadecimalt = 10 decimalt.

Eftersom 255 decimalt = FF hexadecimalt så kan alla bytes skrivas med högst två siffror (00-FF). Exemplet med mp3-datan ovan kan skrivas som

FF FB 90 64

Nästan alla datorprogram som visar data gör det hexadecimalt. Ett program som visar alla bytes i en fil hexadecimalt och som möjliggör redigering av innehållet i filen kallas för en hexeditor. Av tradition brukar hexeditors bestå av tre fält. Fältet i mitten visar varje byte i filen hexadecimalt. Fältet till vänster visar positionen i filen av dessa bytes. Fältet till höger är en representation i tecken, ungefär som texteditorn ovan.

Ovan: mp3 visad i en hexeditor.

Terminologi

När man pratar om data talar man ibland om ”binär data” respektive ”ren text”. Denna kategorisering är ganska godtycklig. ”ren text” är sådan data som består av vanliga latinska bokstäver och siffror när den datan visas i en äldre texteditor. ”binär data” är sådan data som ser ut som nonsens när den visas i en äldre texteditor. Mp3-data är alltså ”binär data”.

"Komprimering" innebär att data representeras med färre antal bits, så att datan tar mindre utrymme.

Ett "filformat" är flera bytes i följd som betyder något speciellt. mp3 är exempelvis ett filformat för komprimerat ljud. Ett exempel på ett okomplicerat binärt filformat är WAV. Nästan alla bytes i en WAV är 16 bit integers som representerar ljudvågor. Alldeles i början av en WAV brukar det finnas större integers, som exempelvis beskriver hur lång filen är.

Terminologisk överkurs

Ett vanligt programmerar-ord är "int". Det är kortform för integer, som betyder heltal på engelska. En int har alltid en viss bredd i bits. Vanliga processorer är exempelvis väldigt snabba att räkna med 32 bit heltal. Eftersom en byte är 8 bits behövs 4 bytes för att representera en 32 bit integer. Som ett exempel skulle de fyra bytesen i början av mp3-filen (FF FB 90 64) kunna representera heltalet FFFB9064 = 4294676580 decimalt (en annan, vanligare, konvention är 6490FBFF = 1687223295 decimalt).

En "struktur", eller "struct", är ett annat vanligt programmerar-ord. En struct är bytes och/eller integers som hör ihop i en logisk gruppering. 20 bytes i rad i en viss position av en fil kanske är en struct av fem 32 bit integers som representerar något.

En "timestamp" är en integer till för att representera tid. I många operativsystem är timestamp en 32 bit integer som innehåller antalet sekunder från 1 januari 1970.

En "sektoreditor" är en speciell hexeditor till för filsystem. Dessa har ofta inbyggda funktioner för att presentera filsystem-specifika strukturer i ett lättläst format.


aliceochbob.se.