Gebruiker:Alody/Binair getal

Een binair getal is een getal dat wordt uitgedrukt in een talstelsel met grondtal 2.

Gebruik van het binaire getal bewerken

We kunnen een symbool gebruiken om aan te geven of een schakelaar aan of uit staat. Met een reeks van dergelijke symbolen kunnen we een circuit van schakelaars beschrijven. Als we als symbool hiervoor binaire cijfers gebruiken, ontstaat er een binair getal. Met dat getal kunnen we rekenen. Op de afbeelding zijn een aantal reeksen van symbolen te zien. De symbolen binnen een reeks hebben met elkaar gemeen dat de een de ander uitsluit. Maar doordat de reeks met de binaire cijfers onderdeel uitmaken van een talstelsel kunnen we die reeks en daarmee alle reeksen samenvatten in bijvoorbeeld het tientallige talstelsel. De samenvatting hier is 667.

1 0 1 0 0 1 1 0 1 1
| | | | | |
ja nee ja nee nee ja ja nee ja ja
 
In deze klok toont elke kolom met LED's een binair getal. De vertaling naar de decimale waarde is eronder gegeven.

Notatie van het binaire getal bewerken

Voor de notatie van het binaire getal worden twee symbolen overgenomen van het tientallig talstelsel. Dit zijn de Arabische cijfers 0 en 1, zodat ook de wijze waarop de symbolen hun waarde krijgen binnen het tientallig talstelsel toegepast kan worden. is ontleend. Vanwege In overeenstemming met de gebruikelijke weergave van cijfers met Arabische cijfers, worden binaire getallen gewoonlijk geschreven met de symbolen 0 en 1 .

Daar dezelfde symbolen in verschillende talstelsels toegepast worden, is het noodzakelijk bij een getal aan te geven welk talstelsel is gebruikt, tenzij dat duidelijk is door de context. Hierover is geen universele afspraak gemaakt. We kennen:

  • 100101 binair (het talstelsel uitgeschreven)
  • 100101b (een kleine letter na het getal; ook bekend als Intel-conventie[1][2] )
  • 100101B (een hoofdletter na het getal)
  • bin 100101 (een woord als voorvoegsel)
  • 100101 2 (een subscript)
  • %100101 (een % teken; ook bekend als Motorola-conventie[1][2] )
  • 0b100101 (een getal en een letter als voorvoegsel, gebruikelijk in programmeertalen)
  • 6b100101 (een getal dat het aantal posities van het getal weergeeft, gevolgd door een letter voor het gebruikte talstelsel)
  • #b100101 (een # symbool gevolgd door een letter voor het talstelsel als voorvoegsel, gebruikelijk in Lisp-programmeertalen)

Omzetten van een decimaal getal naar een binair getal bewerken

 
Conversie van (357) 10 naar binaire notatie resulteert in (101100101)

Om een decimaal getal om te zetten naar een binair getal voert men een aantal delingen door 2 uit op het decimale getal. Na elke deling is er een uitkomst en al dan niet een rest. Op de uitkomst wordt de volgende deling door 2 uitgevoerd. Het proces eindigt als de uitkomst van een deling 1 is. Heeft een deling geen rest dan noteert men een 0 als cijfer voor het gezochte binaire getal. Immers, het cijfer op die positie in het getal heeft geen waarde van zichzelf bij te dragen. Is er wel een rest dan noteert men een 1. Het cijfer draagt op die manier eenmaal de waarde van zijn positie bij aan het getal. Het resultaat van de deling wordt links van het daarvoor genoteerde cijfer genoteerd. (Het eerst genoteerde cijfer is de minst significante bit)

Zo wordt (357) 10 (101100101) 2.[3]


Omzetting decimaal getal naar binair getal
decimaal  
  ÷                    
binair                  

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.

Voor cijfers achter de komma zijn de machten negatief.

Binair 2(positie van de 1) − 1 Decimaal Binair 2(positie van de 1) − 1 Decimaal
0,10000 2−1 0,50000
0,01000 2−2 0,25000 0,01000 2−2 0,2500
0,00100 2−3 0,12500
0,00010 2−4 0,06250 0,00010 2−4 0,0625
0,00001 2−5 0,03125
0,11111 2−1+2−2+2−3+2−4+2−5 0,96875 0,01010 2−2+2−4 0,3125

[Bestand:Leibniz binary system 1703.png|thumb|250px|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 respectievelijk 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).

Omzetten van een binair getal naar een decimaal getal bewerken

De omzetting van een binair getal naar een decimaal getal gaat precies andersom. De omzetting begint met het meest linkse cijfer. Dit is altijd een 1.

Bij de omzetting van een binair getal naar een decimaal getal wordt het resultaat van de voorgaande tussenstap steeds met 2 vermenigvuldigd. Daar wordt het volgende cijfer in de reeks bijgeteld.

In bijgaand voorbeeld wordt 10010101101 2 naar het decimale equivalent geconverteerd. Rij a bevat het binaire getal.


Omzetting binair getal naar decimaal getal
a binair                    
b = <- c + d                    
c = b × 2  2                
d = -> a                  

Men kan ook als tussenstap het hexadecimale getal gebruiken. Elk groepje van 4 binaire cijfers worden dan vervangen door een hexadecimaal cijfer. Vervolgens zet men de verkregen hexadecimale cijfers om in decimale cijfers.


Omzetting binair getal via hexadecimaal naar decimaal getal
a binair                    
b = <- c + d 2 A D
c = b × 2  2                
d = -> a                  


De eerste Prior Value van 0 is gewoon een initiële decimale waarde. Deze methode is een toepassing van het Horner-schema .

binair  1 0 0 1 0 1 0 1 1 0 1 Decimale  1×2 10 + 0×2 9 + 0×2 8 + 1×2 7 + 0×2 6 + 1×2 5 + 0×2 4 + 1×2 3 + 1×2 2 + 0×2 1 + 1×2 0 = 1197

De fractionele delen van een getal worden geconverteerd met vergelijkbare methoden. Ze zijn weer gebaseerd op de equivalentie van verschuiving met verdubbeling of halvering.

In een fractioneel binair getal zoals 0.11010110101 2, is het eerste cijfer 12 , de seconde (12)2=14 , enzovoort. Dus als er eerst een 1 achter de komma staat, dan is het getal minimaal 12 , en vice versa. Het dubbele van dat aantal is minimaal 1. Dit suggereert het algoritme: verdubbel herhaaldelijk het te converteren getal, noteer of het resultaat minimaal 1 is en gooi vervolgens het gehele deel weg.

Bijvoorbeeld, (13)

10, in binair, is:

Converteren Resultaat

13 0.

13×2=23<1 0.0

23×2=113≥1 0,01

13×2=23<1 0,010

23×2=113≥1 0,0101

Dus de herhalende decimale breuk 0. 3 ... is gelijk aan de herhalende binaire breuk 0. 01 . . . .

Of bijvoorbeeld 0,1 10, in binair, is:

Converteren Resultaat 0.1 0. 0,1 × 2 = 0,2 < 1 0.0 0,2 × 2 = 0,4 < 1 0,00 0,4 × 2 = 0,8 < 1 0.000 0,8 × 2 = 1,6 ≥ 1 0,0001 0,6 × 2 = 1,2 ≥ 1 0,00011 0,2 × 2 = 0,4 < 1 0,000110 0,4 × 2 = 0,8 < 1 0,0001100 0,8 × 2 = 1,6 ≥ 1 0.00011001 0,6 × 2 = 1,2 ≥ 1 0,000110011 0,2 × 2 = 0,4 < 1 0.0001100110

Dit is ook een herhalende binaire breuk 0.0 0011 . . . . Het kan als een verrassing komen dat het beëindigen van decimale breuken herhalende uitbreidingen in binair getal kan hebben. Het is om deze reden dat velen verrast zijn om te ontdekken dat 0.1 + ... + 0.1, (10 optellingen) verschilt van 1 in drijvende-kommaberekeningen . In feite zijn de enige binaire breuken met einduitbreidingen in de vorm van een geheel getal gedeeld door een macht van 2, wat 1/10 niet is.

De uiteindelijke conversie is van binaire naar decimale breuken. De enige moeilijkheid doet zich voor bij het herhalen van breuken, maar anders is de methode om de breuk te verschuiven naar een geheel getal, deze om te zetten zoals hierboven en vervolgens te delen door de juiste macht van twee in de decimale basis. Bijvoorbeeld:

x = 1100 .101110¯… x×26 = 1100101110 .01110¯… x×2 = 11001 .01110¯… x×(26−2) = 1100010101 x = 1100010101/111110 x = (789/62)10

Een andere manier om van binair naar decimaal om te zetten, vaak sneller voor iemand die bekend is met hexadecimaal, is om dit indirect te doen: eerst converteren ( x

in binair) in ( 

x

in hexadecimaal) en vervolgens converteren ( 

x

in hexadecimaal) in ( 

x

in decimalen).

Voor zeer grote getallen zijn deze eenvoudige methoden inefficiënt omdat ze een groot aantal vermenigvuldigingen of delingen uitvoeren waarbij één operand erg groot is. Een eenvoudig verdeel-en-heers-algoritme is asymptotisch effectiever: gegeven een binair getal wordt het gedeeld door 10 k, waarbij k zo wordt gekozen dat het quotiënt ongeveer gelijk is aan de rest; dan wordt elk van deze stukken omgezet naar decimaal en worden de twee aaneengeschakeld . Gegeven een decimaal getal, kan het worden gesplitst in twee stukken van ongeveer dezelfde grootte, die elk worden omgezet in binair, waarna het eerste geconverteerde stuk wordt vermenigvuldigd met 10 k en opgeteld bij het tweede geconverteerde stuk, waarbij k het aantal is van decimale cijfers in het tweede, minst significante stuk vóór de conversie.

Voor zeer grote getallen zijn deze eenvoudige methoden inefficiënt omdat ze een groot aantal vermenigvuldigingen of delingen uitvoeren waarbij één operand erg groot is. Een eenvoudig verdeel-en-heers-algoritme is asymptotisch effectiever: gegeven een binair getal wordt het gedeeld door 10 k, waarbij k zo wordt gekozen dat het quotiënt ongeveer gelijk is aan de rest; dan wordt elk van deze stukken omgezet naar decimaal en worden de twee aaneengeschakeld . Gegeven een decimaal getal, kan het worden gesplitst in twee stukken van ongeveer dezelfde grootte, die elk worden omgezet in binair, waarna het eerste geconverteerde stuk wordt vermenigvuldigd met 10 k en opgeteld bij het tweede geconverteerde stuk, waarbij k het aantal is van decimale cijfers in het tweede, minst significante stuk vóór de conversie.

  1. a b (de) Küveler, Gerd (2013), Arbeitsbuch Informatik - eine praxisorientierte Einführung in die Datenverarbeitung mit Projektaufgabe. Vieweg-Verlag, reprint: Springer-Verlag. DOI:10.1007/978-3-322-92907-5. ISBN 978-3-528-04952-2. 9783322929075
  2. a b (de) Küveler, Gerd (4 oktober 2007), Informatik für Ingenieure und Naturwissenschaftler: PC- und Mikrocomputertechnik, Rechnernetze, 5. Vieweg, reprint: Springer-Verlag. ISBN 978-3834891914. 9783834891914
  3. Base System. Geraadpleegd op 31 August 2016.