|
Legge sammen to tall
|
|
Digitale regnemaskiner må kunne legge sammen tall. Addisjon er hovedproblemet:
Kan du addere tall, kan du også subtrahere. Og med litt tenkning kan du
også få til multiplikasjon og divisjon. Men hvordan adderer du
tall når du bare kan SANN og USANN?
|
|
Først må du forstå hvordan det binære tallsystemet fungerer.
Vet du det allerede, kan du bare fortsette -- ellers er du invitert til
et lynkurs i binære tall.
|
La oss begynne med å addere to bits. (En bit tilsvarer et tilstand av type
SANN eller USANN, eller et binært siffer.) Siden hver bit har bare to
mulige verdier, har vi bare fire muligheter å undersøke. De fire
mulige innganger og utganger er:
0 + 0 = 0
1 + 0 = 1
0 + 1 = 1
1 + 1 = 10
|
|
Whoops! Den fjerde linjen forteller at når du adderer to 1-bit tall, må du
ha en utgang som har to bits. Det som skjer er at du få et overdrag, eller
carry-over. Summen blir stårre enn det er mulig å uttrykke med en bit; du
må flytte et hack til venstre.
|
La oss se på logikk-tabellen til dette problemet:
|
Inngang A
|
Inngang B
|
Utgang 1. bit (Carry)
|
Utgang 2. bit (Summe)
|
|
0
|
0
|
0
|
0
|
|
1
|
0
|
0
|
1
|
|
0
|
1
|
0
|
1
|
|
1
|
1
|
1
|
0
|
|
Det er tydelig at det er ganske lett å implementere ved hjelp av
AND og XOR gate'r. 1. bit (Carry'en) oppfører seg som en AND
(eller OG) funksjon. 2. bit (Summen) oppfører seg som en XOR funksjon.
|
|
Men... dette her er enda ikke godt nok. I en datamaskin vil vi trenge å
addere multi-bit tall til hverandre. Vi kan ta ha en slik konstruksjon for
hver bit-posisjon, men da må vi kunne ta hensyn til en carry-over som
måtte oppså ved addisjon i nest-lavere bit-posisjon. Det er som med
desimal-tall. Adderer du tall i kolonner, må du i hver kolonne ta hensyn til overdrag som
du får i kolonnen til høyre. Vi må gjøre
det samme med binære tall!
|