Binair tellen

Hoe zat dat ook alweer. Binair tellen. Even om het geheugen op te frissen. Het binaire talstelsel bestaan uit twee getallen, namelijk 0 en 1. Een bit is een 0 of 1. 8 bits wordt een byte genoemd.

Om een binair getal om te zetten naar het decimale talstelsel kan van de volgende manier gebruik gemaakt worden. Je telt hier van rechts naar links. Stel je heb het volgende binaire getal: 0011. Dit is in het decimale talstelsel het getal 3. Hoe kom je hier nu aan? Wel als volgt. Met de nullen wordt niks gedaan. Je begint met het zoeken naar de positie van de eerste 1. In het voorbeeld 0011 staat de eerste 1 op de eerste positie (je begint rechts met tellen). Vervolgens zoek je naar de volgende positite van een 1. In dit geval is dat de tweede positie. Nu bereken je 2 tot de macht positie-1. Vervolgens tel je alle decimale getallen bij elkaar op en je heb de waarde in het decimale talstelsel. Let wel op: als er op de eerste positie een 1 staat, is dat ook een 1 in het decimale talstelsel. Voorbeeld:

positie: 4 3 2 1
binair : 0 0 1 1

formule: 2 tot de macht positie-1

Optelling:

2 0 = 1 (uitzondering: is de eerste positie een 1, dan ook 1 in decimale stelsel)
2 1 = 2
-------+
3

En dat is het! De nullen worden niet gebruikt en omdat er verder geen enen meer staan kan je al stoppen bij de tweede positie.

Een ander trucje is om alle machten van 2 naast elkaar te zetten en daaronder het binaire getal. Hier een voorbeeld met een 8-bits getal (8 bitjes naast elkaar):

128 64 32 16 8 4 2 1
0 1 1 0 1 1 0 0
Enige wat je nu hoeft te doen is alle (decimale) getallen bij elkaar op te tellen waaronder een 1 staat! In bovenstaand voorbeeld krijg je dus: 4 + 8 + 32 + 64 = 108.

Terzijde:
Als je overal een 1 neer zet, dus 11111111 (8 1'tjes) krijg je het getal 255. Als je nu de slag zou maken naar processoren en je zou een 8 bits processor hebben, dan betekent dit dat deze processor 255 bitjes aan en uit kan zetten. Dit betekent weer dat de processor niet meer dan 255 bits (zo'n 32 byte) geheugen aankan. Een iets recenter voorbeeld: een 32 bits processor kan dus omgaan met 2 32 = 4.294.967.296 bits, wat dus neerkomt op 4 GB. Windows XP 32-bit kan dus maar een max hebben van 4GB intern geheugen.

Reacties

Populaire posts van deze blog

[SQL Server] varchar vs nvarchar

MS Sql 70-461: Chapter 5

[C#] Class serialiseren en deserialiseren