Konsepter:Binærkode

Fra CodeWiki

Gå til: navigasjon, søk

Det binære tallsystemet representerer verdier ved bruk av to symboler, normalt 0 og 1. Datamaskinen kaller disse bits. En bit er enten av (0) eller på (1). Når plassert i sett på 8 bit (1 byte) kan 256 verdier bli representert, 0 til 255 (128+64+32+8+4+2+1) Ved bruk av et ASCII kart kan disse verdiene bli omgjort til bokstaver og tekst kan bli lagret.

Innhold

Tall

Binær Desimal
0 0
1 1
10 2
11 3
100 4
101 5

Binærkode representerer altså tall, og er et tallsystem bestående av 0 og 1 hvor grunntallet er 2. Disse kan så kombineres på ulike måter for å representere tall fra det tallsystemet vi kjenner. 11010 = = 1*2^4 + 1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 16 + 8 + 0 + 2 + 0 = 26. Med andre ord, den binære koden 11010 = tallet 26. Hele tallet grunntallet opphøyd i en eksponent som øker etterhvert som man går mot venstre i tallet.

Systemet er faktisk akkurat det samme som desimalsystemet vi bruker til vanlig, bare at 1 er det høyeste sifferet. Så mens man i desimalsystemet teller: 01, 02, 03.... 09, 10, hvor man øker verdien av tallet til venstre når det tallet lengst til høyre går over maksverdien (9), gjør man akkurat det samme i Binærsystemet (totallsystemet). 0, 1, 10, 11, 100 osv..

Som du ser på figuren til høyre er systemet nøyaktig det samme som i det vanlige desimale tallsystemet.

Konvertere fra Binær til Desimal

For å konvertere et tall fra binær til desimal, er det bare å innse at binærkoden, slik som desimaltall, består aav hele grunntallet opphøyd i en eksponent som øker etterhvert som man går mot venstre i tallet. 11010 = = 1*2^4 + 1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 16 + 8 + 0 + 2 + 0 = 26. Med andre ord, den binære koden 11010 = tallet 26. Her har vi altså konvertert binær til desimal.

Et annet eksempel: 0100 0001 = 0*2^7 + 1*2^6 + 0*2^5 + 0*2^4 + 0*2^3 + 0*2^2 + 0*2^1 + 1*2^0 = 65.

Konvertere Desimal til Binær

Når man skal konvertere desimaltall til binær heltallsdel, kan man gjøre som følger: Man gjennomfører gjentatte divisijoner med grunntallet 2, og registrerer rest etter hver divisjon. Binærtallet er da alle rest-tallene etter divisjonen er ferdig.

Konverting av Desimaltall til binær heltallsdel
Konverting av Desimaltall til binær heltallsdel

Skal man konvertere desimaltall til binær deltallsdel gjennomfører man gjentatte multiplikasjoner med grunntallet 2 og registrerer siffer foran komma.

Konverting av Desimaltall til binær deltallssdel
Konverting av Desimaltall til binær deltallssdel

Negative Tall

Visualisering av 2's kompliment
Visualisering av 2's kompliment

Negative tall behandles litt annerledes enn positive tall.

Anta at vi har 4-bit for å representere tall i en maskin. Vi bestemmer hvordan vi skal bruke disse 4 bitene. Vi har 2^4 = 16 kombinasjoner. Vi kan representere bare positive tall (0..15), samt muligheten til å representere både positive og negative tall.

For å arbeide med negative tall må vi ordne oss sånn at vi må stjele en del av kombinasjoner brukt til positive tall og bruke dem til å representere negative tall. Ergo, ønsker vi å benytte oss av både positive tall og negative tall når vi kun har 4 bit, kan vi ikke bruke positive tall høyere enn 7, fordi tallene 8-15 brukes til negative tall. Det vil si at 8 som vanligvis er 1000, blir - 8, mens 9 (1001) blir -7, osv.. Dermed får vi en ny tallskala som går fra -8 -> 7. Regelen sier at Den mest betydningsfulle bit'en, er alltid 1 hvis tallet er negativt, mens det alltid vil være 0 hvis tallet er positivt

Negative tall lagres som 2's komplement. 2's komplement til -12 finnes slik (ved bruk av 8 bit):

  • Tallet 12: 0000 1100
  • 1's komplement til tallet 12 (inverterer): 1111 0011
  • Dermed adderer vi med +1  : 0000 0001
  • 2's komplement til 12:  : 1111 0100

En annen metode for å finne 2's kompliment er å gå fra høyre mot venstre i tallet, behold siffer til og med første 1'er, og inverter resterende siffer. Merk: Maskinen bruker førstnevnte metode, mens vi kan bruker sistnevnte da denne er raskere.

Subtraksjon ved addisjon

Vi viser dette ved hjelp av et eksempel. Substraksjonen vi skal utføre med binære tall: 90-12 = 78 Binært kan dette skrives:

  • 90 = 0101 1010
  • -12 = 1111 0100 (2's komplement til 12 -> se ovenfor for forklaring)
  • 78 = 0100 1110 (legger vi sammen 64 + 8 + 4 + 2 får vi 78)

NB: husk at maskinen kun behandler 8 bit, så et eventuelt 9'ende binærtall ser vi bort ifra. Utifra regelen nevnt i seksjonen ovenfor vet vi at svaret er positivt siden den mest betydningsfulle bit'en er 0.

Eksempel 2 (8 bit): 12 - 90 = -78. Binært kan dette skrives

  • 12 = 0000 1100
  • -90 = 1010 0110 (2's komplement til 90
  • -78 = 1011 0010 (2's komplement til 78)
  • for å se verdien til svaret må vi se på 78 = 0100 1110

ASCII Bokstaver i Binærform

Som nevnt kan binærkoder konverteres til bokstaver, noe som lar tekst bli lagret. Hver bokstav representeres av 8 tall, enten 0 eller 1. Merk at det skilles mellom store og små bokstaver.

  • A - 01000001
  • B - 01000010
  • C - 01000011
  • D - 01000100
  • E - 01000101
  • F - 01000110
  • G - 01000111
  • H - 01001000
  • I - 01001001
  • J - 01001010
  • K - 01001011
  • L - 01001100
  • M - 01001101
  • N - 01001110
  • O - 01001111
  • P - 01010000
  • Q - 01010001
  • R - 01010010
  • S - 01010011
  • T - 01010100
  • U - 01010101
  • V - 01010110
  • W - 01010111
  • X - 01011000
  • Y - 01011001
  • Z - 01011010

Vi skiller altså mellom store og små bokstaver. De små er som følger...

  • a - 01100001
  • b - 01100010
  • c - 01100011
  • d - 01100100
  • e - 01100101
  • f - 01100110
  • g - 01100111
  • h - 01101000
  • i - 01101001
  • j - 01101010
  • k - 01101011
  • l - 01101100
  • m - 01101101
  • n - 01101110
  • o - 01101111
  • p - 01110000
  • q - 01110001
  • r - 01110010
  • s - 01110011
  • t - 01110100
  • u - 01110101
  • v - 01110110
  • w - 01110111
  • x - 01111000
  • y - 01111001
  • z - 01111010

==

Personlige verktøy
dataprogrammering
generelt