Hvad er binær kode?
Alt den data som computerprocessorer benytter til at indlæse instruktioner er skrevet i binær kode. Derfor danner binær kode grundlag for alle programmeringssprog og alt det indhold som man kan se på computere.
Binær kode er baseret på et talsystem (også kaldet totalsystemet), som består af to cifre: 0 og 1. Disse cifre repræsenterer værdien for en slukket og en tændt transistor. Det betyder, at en transistor uden elektrisk strøm er repræsenteret af tallet “0”, og en transistor med elektrisk strøm er repræsenteret af tallet “1”. Dette er meget anderledes fra det normale talsystem, som benytter ti forskellige cifre, i stedet for to, til at repræsentere en værdi.
Hvert enkelt binært ciffer kan omtales som et bit. Otte bits svarer til det man kalder et byte. Bytes bruges som en måleenhed for lagerplads på en computer. I nedenstående tabel kan man se alle byte-enhederne og hvad de svarer til:
Enhed | Svarer til... |
---|---|
1 Bit | Ét binært ciffer |
1 Byte | 8 Bits |
1 Kilo Byte | 1024 Bytes |
1 Mega Byte | 1024 Kilo Bytes |
1 Giga Byte | 1024 Mega Bytes |
1 Terra Byte | 1024 Giga Bytes |
1 Peta Byte | 1024 Terra Bytes |
1 Exa Byte | 1024 Peta Bytes |
1 Zetta Byte | 1024 Exa Bytes |
1 Yotta Byte | 1024 Zetta Bytes |
1 Bronto Byte | 1024 Yotta Bytes |
1 Geop Byte | 1024 Bronto Bytes |
[adinserter block=”1″]
Historien bag binær kode
Binær kode som vi kender det i dag blev opfundet af Gottfried Wilhelm Leibniz i 1698 i hans rapport Explication de l’Arithmétique Binaire (på dansk: Redegørelse af Binær Regning). I rapporten fremlægger Gottfried bl.a. sin fascination af at benytte et talssystem udelukkende bestående af 0- og 1-taller. Han nåede dog aldrig at finde ud, hvordan dette system kunne benyttes i et praktisk sammenhæng.
I 1847 udvidede George Boole på teorien bag dette talsystem ved at opfinde et logisk system bestående af boolske værdier (to logiske modsætninger, som f.eks. Sandt og Falsk). Dette system byggede på de binære tal, 1 og 0. De boolske værdier og det binære system blev først benyttet i praksis i 1937, da matematikeren Claude Shannon opdagede at de boolske værdier kunne repræsentere et elektrisk strømkreds, som kunne tændes og slukkes.
Shannons opdagelse introducerede muligheden for at benytte binær kode i forbindelse med opbevaring af data på en computer. Binær kode er nemlig et system som computere kan forstå da cifrene 1 og 0 kan oversættes til et tændt og slukket kredsløb. De første computere benyttede hulkort til at opbevare data. Det foregik ved at man havde et kort, som man indsatte i computeren. Der var små huller forskellige steder på kortet, hvor et hul repræsenterede det binære ciffer 1 og intet hul repræsenterede det binære ciffer 0.
Det binære talsystem
En samling af bits kaldes en binær streng.
Tallene fra 0 til 10 repræsenteres af følgende binære strenge, som er vist i nedenstående tabel:
Tal | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
Binær streng | 0 | 1 | 10 | 11 | 100 | 101 | 110 | 111 | 1000 | 1001 | 1010 |
Bemærk at i en binær streng, så vil nullerne foran ikke have nogen betydning for værdien. Derfor kan “9” både være “1001” og “00001001”. Man putter de ekstra nuller på foran for at skrive den binære streng i en byte-format, som netop består af otte cifre.
Et byte kan repræsentere 256 forskellige værdier, da der kan laves 256 forskellige kombinationer af 0 og 1 med otte cifre. Det betyder at alle tallene fra 0 til 255 kan dannes med et byte (bemærk at det kun går op til 255 og ikke 256, da 0 tæller med i de 256 værdier).
Omdan binær streng til normale tal
For at være i stand til at “læse” binære cifre og omdanne dem til normale tal, så skal man lave en mindre matematisk udregning. Hvert ciffer i et byte som er et 1-tal vil svare til værdien 2 opløftet i en eksponent. Eksponentens værdi afhænger af hvorhenne 1-tallet står i den binære streng. Prøv at tage et kig på nedenstående tabel, som skal læses fra højre mod venstre:
Eksponentværdi | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 |
Bit | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 |
Eksponentens værdi stiger fra 0 og opad i takt med at man bevæger sig fra højre mod venstre. Hvis det binære ciffer er 0, så vil det ikke have nogen betydning for værdien. Hvis det binære ciffer er 1, så skal dens værdi lægges sammen med de andre værdier som har et binært ciffer på 1. Hvis det første tal fra højre i en binær streng er et 1-tal, så har tallet værdien 20. Hvis det næste tal også er et 1-tal, så har tallet også værdien 21. Sådan fortsætter det, og når man lægger alle disse værdier sammen, så får man talværdien af den binære streng.
I ovenstående eksempel er der et 1-tal på den anden plads, den tredje plads, den fjerde plads og den femte plads (fra højre). Regnestykket lyder altså på 21 + 22 + 23 + 24 som er 2 + 4 + 8 + 16 som er lig med 30. Den binære streng “00011110” er altså lig med 30.
På den måde kan man danne alle tal fra 0 til 255 med otte binære cifre. Bytet med den højeste værdi vil derfor være “11111111” som svarer til 255. Bytet med den laveste værdi vil være “00000000” som svarer til 0.
Kalkulationer med binære strenge
Matematiske kalkulationer i det binære talsystem minder meget om normale kalkulationer. Lad os sige at man har to binære strenge: “1100” og “1010”. Hvis man lægger disse strenge sammen, så vil resultatet være “10110”. Det er regnet ud ved, at man stiller cifrene op mod hinanden og kigger på ét ciffer ad gangen fra højre mod venstre:
1100 + 1010 = 10110
- De to første cifre fra højre er “0” og “0”: 0 + 0 = 0. Derfor er det første ciffer i resultatet 0
- De to næste cifre fra højre er “0” og “1”: 0 + 1 = 1. Derfor er det andet ciffer i resultatet 1
- De to næste cifre fra højre er “1” og “0”: 1 + 0 = 1. Derfor er det tredje ciffer i resultatet 1
- De to sidste cifre er “1” og “1”: 1 + 1 = 0, med 1 i mente. Derfor er det fjerde ciffer 0.
- Det femte og sidste ciffer i resultatet vil være 1, da der var 1 i mente
Resultatet er derfor 10110.
[adinserter block=”1″]
Binær lommeregner
Med den binære lommeregner kan du foretage kalkulationer i binær kode. Samtidig kan den også bruges til at konvertere binær kode til decimaltal og omvendt.
Bit-længden
Længden på binære strenge bliver hele tiden øget i takt med at datamængden på computere bliver større og mere kompleks. En 8-bit computer vil være i stand til at indlæse otte bits af gangen. Der kan laves 256 forskellige værdier ud af otte bits.
En 8-bit computer er dog ikke længere tilstrækkelig i dag, da f.eks. billeder og videoer gerne indeholder mere end 256 forskellige farver. Derfor har man fulgt op med 16-bit computere, som kan holde 65.536 forskellige værdier. Efter 16-bit computere, kommer 32- og 64-bit computere, som er et af de to slags man benytter i dag.
I de fleste systemer benytter man det første bit-tal i den binære streng til at indikere, om værdien er positiv eller negativ. Hvis det første tal er 1, så vil tallet være negativt. Hvis tallet er 0, så vil det være positivt. De resterende bits vil blive benyttet til selve værdien.
En 32-bit computer kan holde 4.294.967.295 forskellige værdier. Dvs. at bit-strengens laveste værdi kan være -2.147.483.648 og dens højeste værdi kan være 2.147.483.648. Dette skulle man tro var mere end rigeligt, men i nutidens verden har man nogle gange behov for at benytte endnu højere værdier. Derfor findes der også 64-bit computere.
En 64-bit computer kan holde 18.446.744.073.709.551.616 forskellige værdier. Bit-strengens laveste værdi kan derfor være -9.223.372.036.854.775.808 og dens højeste værdi kan være 9.223.372.036.854.775.808.
ASCII og Unicode
ASCII (American Standard Code for Information Interchange) er en standard der blev opfundet i 1963 der definerer, hvordan man transformerer binære strenge om til grafiske tegn, så de kan indlæses i et computersystem. Disse grafiske tegn udgør i alt 128 tegn, som er opdelt i kontroltegn og grafiske tegn:
- Kontroltegn er tegn som giver computeren meta-information om hvordan hvordan de grafiske tegn skal indlæses. I ASCII er der 32 kontroltegn, f.eks. “Backspace”, “Null char” og “Form Feed”
- Grafiktegn er tegn som kan indlæses og vises på en computerskærm, så de kan læses af mennesker. Disse tegn inkluderer bogstaver (både store og små bogstaver), tal fra 0 til 9 og diverse tegn som f.eks. snabel-a, udråbstegn og parenteser. I ASCII er der 95 grafiktegn
Eftersom standarden indeholder 128 tegn, så kan alle tegnene repræsenteres af binære strenge på syv binære cifre (7 bit), da syv cifre er nok til at lave 128 forskellige kombinationer.
Følgende binære streng, “01010001”, svarer til tallet 81. Når man transformerer denne binære værdi om til et grafisk tegn ved hjælp af ASCII, så vil det svare til bogstavet “Q”.
Den officielle ASCII-tabel med alle 128 tegn kan ses her:
Den originale ASCII-tabel har kun plads til engelske tegn og inkluderer bl.a. ikke Æ, Ø og Å. Derfor findes der flere forskellige udvidelser til ASCII-standarden med helt op til 255 tegn, som alle kan dannes med otte binære cifre (1 byte). Desværre er 256 tegn heller ikke nok til at inkludere bogstaver og symboler fra alle nationaliteter i hele verden. Derfor blev Unicode-skemaet opfundet i 1992, som brugte 16-bit strenge, hvilket betød at den sagtens kunne inkludere alle verdens tegn. Du kan læse mere om Unicode på deres hjemmeside her.
Andre standarder
Ligesom at ASCII og Unicode omdanner binære strenge om til bogstaver, tal og symboler, kan andre standarder og filformater som f.eks. MP3, WAV og GIF omdanne binære strenge til noget mere nyttigt, som f.eks. farverne på et billede, eller lydbølgerne i en lydfil. Binær kode danner nemlig grundlag for alt indhold på en computer.