Binair talstelsel

Uit Wikipedia, de vrije encyclopedie
Dit is een oude versie van deze pagina, bewerkt door Pompidombot (overleg | bijdragen) op 13 jul 2010 om 20:38. (Help mee met het oplossen van links naar dp's! met AWB)
Deze versie kan sterk verschillen van de huidige versie van deze pagina.
  Getalsystemen   

Het binaire of tweetallige getalsysteem is een positiestelsel, waarin een getal wordt voorgesteld door een rijtje van de cijfers 0 en 1. Een dergelijk cijfer wordt in deze context een bit genoemd.

Binair Decimaal
00000 0
00001 1
00010 2
00011 3
00100 4
00101 5
00110 6
00111 7
01000 8
01001 9
01010 10
01011 11
01100 12
01101 13
01110 14
01111 15
1 + 1 = 10 1 + 1 = 2
0101 × 0101 = 011001 5 × 5 = 25

In dit stelsel staat bijvoorbeeld 0110 voor het getal 6 in het decimale stelsel.

Omdat de geheugencellen van computers twee waarden kunnen aannemen, is er sprake van binaire voorstelling van de opgeslagen informatie. Daarom worden getallen in computers intern voorgesteld als binaire getallen. Voor de buitenwereld worden deze getallen vertaald naar het hexadecimale of het octale stelsel, die beide nauw verwant zijn met het binaire. Zie ook Bcd code, als een tussenvorm tussen decimaal en binair.

Het octale en hexadecimale stelsel worden door computerprogrammeurs gebruikt bij taken waarbij ze de bitconfiguratie van het getal moeten kunnen zien, omdat octale en hexadecimale getallen gemakkelijk uit binaire getallen zijn af te leiden, namelijk door de binaire cijfers in groepjes van 3 (octaal) of 4 (hexadecimaal) te verdelen en deze groepjes van 3 respectievelijk 4 binaire cijfers steeds tot één octaal respectievelijk hexadecimaal cijfer om te zetten. Dit principe geldt voor alle getalstelsels waarvan het aantal cijfers een macht van twee is.

Van binair naar decimaal

Om een binair getal te vertalen naar een decimaal getal, hoeft men slechts te kijken naar de posities waar een 1 staat. Voor ieder binair cijfer 1 berekent men de door de positie van dit cijfer aangegeven macht van twee, en wel: 2positie - 1. De som van de op deze wijze berekende reeks decimale getallen geeft de waarde van het binaire getal decimaal weer. De eerste positie is de meest rechtse en komt overeen met het getal 1. De tweede positie, de tweede van rechts, komt overeen met het getal 2, de derde van rechts met 4, enz.

Binair 2(positie van de 1) - 1 Decimaal Binair 2(positie van de 1) - 1 Decimaal
100000 25 32
010000 24 16 010000 24 16
001000 23 8
000100 22 4 000100 22 4
000010 21 2
000001 20 1 000001 20 1
111111 25+24+23+22+21+20 63 010101 24+22+20 21

Simpel gezegd: Bereken voor elk cijfer 1 in het binaire getal, de overeenkomstige macht van 2. Een binair getal van 6 cijfers, bijvoorbeeld 111111, wordt vertaald in (van links naar rechts) 32, 16, 8, 4, 2 en 1. De som 32 + 16 + 8 + 4 + 2 + 1 = 63 is de decimale waarde van dit binaire getal. Zo wordt 010101 16 + 4 + 1 = 21 in decimale waarden.

Eenvoudig omrekenen

Binaire getallen bij Gottfried Wilhelm Leibniz.
In 256 128 64 32 16 8 4 2 1 Uit
001101010 0 0 1 1 0 1 0 1 0 =106
+64 +32 +8 +2
100010000 1 0 0 0 1 0 0 0 0 =272
+256 +16
57 -32 -16 -8 0 0 -1 =111001
1 1 1 0 0 1

Bovenstaande tabel is een eenvoudig hulpmiddel voor het omrekenen van binair naar tientallig en andersom. Stel we hebben het binaire getal 001101010. We vullen dit in de tabel in. Bij elke 1 kijken we naar de waarde in de bovenste rij. Bij het voorbeeld zijn dit de waarden 64, 32, 8 en 2. Door deze op te tellen weten we hoeveel 001101010 in het tientalligstelsel is, namelijk 106. Het tweede voorbeeld - 100010000 - wordt dan 272.

Andersom is iets moeilijker. Stel we willen het getal 57 omzetten. Dan zoeken we eerst het grootste getal in de bovenste rij dat kleiner is dan of gelijk aan 57, namelijk 32. Op die plek zetten we al een 1. Dit wordt dan (000)100000. Dan trekken we 32 van 57 af, dat wordt 25. Voor dit getal zoeken we weer het grootste getal in de bovenste rij dat kleiner is dan of gelijk aan 25, namelijk 16. Ook voor de 16 zetten we een 1, dus (000)110000. We trekken 16 van 25 af, dat wordt 9. We zoeken weer het grootste getal in de bovenste rij dat kleiner is dan of gelijk aan 9, namelijk 8. Voor deze zetten we weer een 1. (000)111000. 9-8=1. Nu hoeven we niet verder te zoeken, want de 1 is makkelijk gevonden. Ook deze wordt toegevoegd. Zo hebben we relatief eenvoudig berekend dat 57 binair 000111001 ofwel 111001 is.

Berekenen via de computer

Volgende code in Java kan gebruikt worden om met een decimaal getal een binaire weergave van dat getal te maken.

public class BinairOmzetten {
   public static void main(String[] args) {
      System.out.println("15  -->  " + getBinary(15));   //1111
      System.out.println("50  -->  " + getBinary(50));   //110010
      System.out.println("200 -->  " + getBinary(200));   //11001000
      
      // Of gebruik de ingebouwde functionaliteit Integer.toBinaryString(int i)
   }
   
   public static String getBinary(int n) // Werkt alleen voor positieve getallen
    {
      if(n==0)
         return "0";
      else if(n==1)
         return "1";
      else
         return getBinary(n>>1)+(n&1);
    }
}

Andere coderingen

De normale binaire codering gaat uit van "gewogen" posities. Hierbij wordt over het algemeen het 'Big-endian' principe gebruikt, zie Endianness.

De Gray-code is een manier van coderen waarbij van ieder opeenvolgend paar getallen slechts één enkele bit verschilt.

Trivia

"There are 10 kinds of people; those who can count binary and those who can't" is een bekend grapje.

Vertaald:

"Er zijn 10 soorten mensen: Mensen die binair kunnen tellen en mensen die dat niet kunnen."
10 is dan natuurlijk binair voor het decimale 2.

Zie ook