de toevoeging van binaire getallen is een enigszins vreemd proces, en kan in het begin enigszins verbijsterend lijken. Maar in werkelijkheid is het zeer vergelijkbaar met de optelling van decimale getallen dat we worden onderwezen als onderdeel van de elementaire wiskunde – met de voor de hand liggende uitzondering dat we werken met twee cijfers in plaats van tien!
om na te denken over optellen in binaire termen, laten we eens kijken naar de binaire optelling van twee 1-bits waarden – de eenvoudigste vorm van optellen die we ons kunnen voorstellen:
de bovenstaande tabel geeft de fundamentele logische regels van binaire optelling weer. De getallen aan de linkerkant van de tabel vertegenwoordigen de binaire waarden die we proberen toe te voegen, en de getallen aan de rechterkant vertegenwoordigen het resultaat van deze toevoeging. Dit kan zinvol zijn, afgezien van de vreemde dragen kolom die plotseling is verschenen!
de kolom carry geeft resultaten aan waarbij we het bedrag hebben overschreden dat we met slechts één bit kunnen vertegenwoordigen. Het hebben van een extra bit om dit weer te geven fungeert als een mechanisme voor het verplaatsen (of dragen) van overschrijding van waarden naar de volgende eenheid kolom (in binaire deze eenheden kolommen zijn 1, 2, 4, 8… etc) bij het berekenen van de optelling. Intuïtief, kunt u denken aan dit op dezelfde manier dat we decimale waarden kunnen ‘dragen’ in hun volgende eenheid kolom (1, 10, 1000… etc) bij het berekenen van decimale optelling met de hand.
maar hoe zit het met het implementeren van dit als hardware? Nou, omdat de optelmethode basislogica gebruikt, kan het worden geconstrueerd als een digitaal circuit dat wordt weergegeven door het blokdiagram hieronder.
dit circuit neemt twee 1-bit binaire waarden als ingangen (a & B), voert een resultaat (R) en carry waarde (aangezien de carry is een output van het resultaat noemen we het ‘carry out’, of kortweg Cout). Dit gedrag is wat een ‘halve adder’ definieert – een mechanisme om ons in staat te stellen 1-bit binaire toevoeging uit te voeren.