Wikisage is op 1 na de grootste internet-encyclopedie in het Nederlands. Iedereen kan de hier verzamelde kennis gratis gebruiken, zonder storende advertenties. De Koninklijke Bibliotheek van Nederland heeft Wikisage in 2018 aangemerkt als digitaal erfgoed.
- Wilt u meehelpen om Wikisage te laten groeien? Maak dan een account aan. U bent van harte welkom. Zie: Portaal:Gebruikers.
- Bent u blij met Wikisage, of wilt u juist meer? Dan stellen we een bescheiden donatie om de kosten te bestrijden zeer op prijs. Zie: Portaal:Donaties.
Binair: verschil tussen versies
(http://nl.wikipedia.org/w/index.php?title=Binair&oldid=29545369) |
(code) |
||
Regel 105: | Regel 105: | ||
==Berekenen via de computer== | ==Berekenen via de computer== | ||
De volgende code in [[java (programmeertaal)|Java]] kan gebruikt worden om met een decimaal getal een binaire weergave van dat getal te maken. | De volgende code in [[java (programmeertaal)|Java]] kan gebruikt worden om met een decimaal getal een binaire weergave van dat getal te maken. | ||
<source lang=java> | <code><source lang=java> | ||
public class BinairOmzetten { | public class BinairOmzetten { | ||
public static void main(String[] args) { | public static void main(String[] args) { | ||
Regel 125: | Regel 125: | ||
} | } | ||
} | } | ||
</source> | </source></code> | ||
==Andere coderingen== | ==Andere coderingen== |
Versie van 3 mrt 2012 14:11
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 |
01011 | 11 |
01100 | 12 |
01101 | 13 |
01110 | 14 |
01111 | 15 |
1 + 1 = 10 | 1 + 1 = 2 |
0101 × 0101 = 011001 | 5 × 5 = 25 |
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.
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
![](/w/images/thumb/a/ac/Leibniz_binary_system_1703.png/250px-Leibniz_binary_system_1703.png)
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.
Een andere methode bestaat erin om bij de eerste "1" links te starten en het volgende algoritme toe te passen. We onthouden 1 en schuiven 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=0 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 naar rechts geschoven en wordt 2; 2+1=3 en wordt naar rechts verschoven en wordt 6; 6+0=0 en wordt naar rechts verschoven en wordt 12; 12+1=13 en wordt naar rechts verschoven en wordt 26; 26+0=26 en wordt naar rechts verschoven en wordt 52; 52+1=53 en wordt naar rechts verschoven en wordt 106. Er zijn verder geen cijfers meer en we komen dus uit op 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 met een decimaal getal een binaire weergave van dat getal te maken.
<source lang=java>
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);
}
}
</source>
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
- Septenair (7-tallig stelsel)
- Octaal (8-tallig stelsel)
- Decimaal (10-tallig stelsel)
- Duodecimaal (12-tallig stelsel)
- Hexadecimaal (16-tallig stelsel)
- Sexagesimaal (60-tallig stelsel)