Naar inhoud springen

Binair talstelsel

Beluister (info)
Uit Wikipedia, de vrije encyclopedie
Dit is een oude versie van deze pagina, bewerkt door Xqbot (overleg | bijdragen) op 17 apr 2020 om 21:30. (Bot: Vervang de verouderde <source> tag)
Deze versie kan sterk verschillen van de huidige versie van deze pagina.
Getalsystemen

Binair Decimaal
00000 0
00001 1
00010 2
00011 3
00100 4
00101 5
00110 6
00111 7
01000 8
01001 9
01010 10

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

Een binaire variabele is een variabele die twee elkaar uitsluitende waarden kan aannemen, zoals 1 of 0, + of -, Ja of Nee, Waar of Onwaar, Aan of Uit.

Het getal 0110 bijvoorbeeld in het binaire talstelsel representeert het getal 6 in het decimale stelsel.

Bij geautomatiseerde opslag en communicatie van gegevens (zoals binnen en tussen computers in de ruime zin van het woord) worden deze vaak binair gecodeerd, dat wil zeggen als een reeks bits. Voor een kortere notatie wordt zo'n reeks bits vaak 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 willen zien, omdat er direct hardware aangesproken wordt. In de hardware bestaat informatie uitsluitend in de vorm van reeksen enen en nullen.

Octale en hexadecimale getallen zijn uit binaire getallen 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 er is het binaire getal 001101010. Vul dit in de tabel in en kijk naar de waarde in de bovenste rij. Bij het voorbeeld zijn dit de waarden 64, 32, 8 en 2. Door deze op te tellen is nu bekend hoeveel 001101010 in het tientalligstelsel is, namelijk 106. Het tweede voorbeeld - 100010000 - wordt dan 272.

Een andere methode bestaat erin om bij de eerste "1" links te starten en het volgende algoritme toe te passen. 1 onthouden, schuif een plaats naar rechts. Hiervoor doen we 1*2=2 en onthouden 2. We komen op het tweede cijfer terecht. Is dit 0 dan doen we 2+0=2 en schuiven een plaats op naar rechts. Hiervoor doen we 2*2= 4. Was het tweede cijfer 1 dan deden we 2+1=3 en schuiven we een plaats naar rechts. Hiervoor doen we 3*2=6. Deze methode wordt verder toegepast tot het einde der cijfers. Toegepast op het binaire getal 001101010 geeft dit: 1 wordt 1 plaats opgeschoven en wordt 2; 2+1=3 en na opschuiven wordt het 6; 6+0=6 en wordt na opschuiven 12; 12+1=13 en wordt na opschuiven 26; 26+0=26 en wordt na opschuiven 52; 52+1=53 en wordt na 1 plaats opschuiven 106. Er zijn verder geen cijfers meer en de uitkomst is dus 106.

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.

Eenvoudiger kan ook op de volgende manier. We beginnen het binaire getal van rechts naar links te noteren. Is het getal oneven dan legt men rechts een 1 neer. We trekken van het oorspronkelijke getal 1 af en gaan één plaats naar links door het overblijvende getal te delen door 2. Is dit getal oneven dan legt men op de tweede plaats van rechts te beginnen een 1 neer. In het andere geval een 0. We trekken repectievelijk 1 of 0 af van het getal en gaan verder een plaats naar links door dit getal te delen door 2.

Toegepast op 57 geeft dit het volgende. 57 is oneven en we schrijven rechts een 1. 57-1=56, we schuiven een plaats naar links op en delen hiervoor 56 door 2 en dit geeft 28. 28 is even en we schrijven dus een 0 (de twee laatste cijfers van de binaire notatie zijn reeds bekend: 01). We schuiven de overblijvende 28 een plaats naar links en delen hiervoor 28 door 2 en dit geeft 14. 14 is even en we schrijven dus een 0 (de drie laatste cijfers van de binaire notatie zijn reeds bekend: 001). We schuiven de overblijvende 14 een plaats naar links en delen hiervoor 14 door 2 en dit geeft 7. 7 is oneven en we schrijven dus een 1 (de vier laatste cijfers van de binaire notatie zijn reeds bekend: 1001). 7-1=6, we schuiven een plaats naar links op en delen hiervoor 6 door 2 en dit geeft 3. 3 is oneven en we schrijven dus een 1 (de vijf laatste cijfers van de binaire notatie zijn reeds bekend: 11001). 3-1=2, we schuiven een plaats naar links op en delen hiervoor 2 door 2 en dit geeft 1. 1 is oneven en we schrijven dus een 1 (de zes cijfers van de binaire notatie zijn bekend: 111001).

Berekenen via de computer

De volgende code in Java kan gebruikt worden om een binaire weergave van een positief geheel 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

"Er zijn 10 soorten mensen: Mensen die binair kunnen tellen en mensen die dat niet kunnen." is een bekende inside joke.

Zie ook