Binær divisjon kan løses ved hjelp av metoden for lang deling, som er en metode som kan lære deg delingsprosessen selv så vel som å lage enkle dataprogrammer. I tillegg kan komplementære metoder for iterativ subtraksjon gi tilnærminger du kanskje ikke er kjent med, selv om de ikke ofte brukes til programmering. Maskinspråk bruker vanligvis tilnærmingsalgoritmer for å være mer effektive, men dette er ikke beskrevet i denne artikkelen.
Steg
Metode 1 av 2: Bruke Long Division
Trinn 1. Lær desimal lang divisjon på nytt
Hvis du ikke har brukt lang divisjon i det vanlige desimal (basis ti) tallsystemet på lenge, går du tilbake til det grunnleggende ved å bruke eksempeloppgaven 172 delt på 4. Ellers hopper du over dette trinnet og går rett til neste trinn for å utforske en lignende prosess med binære tall.
- Teller delt på nevner, og resultatet er kvotient.
- Sammenlign nevneren med det første tallet i telleren. Hvis nevneren er større, fortsett å legge tall til telleren til nevneren er mindre. (For eksempel, hvis vi beregner 172 delt på 4, sammenligner vi 4 med 1, vi vet at 4 er større enn 1, så fortsett å sammenligne 4 med 17.)
- Skriv det første sifferet i kvoten over den siste telleren som ble brukt i sammenligningen. Når vi sammenligner 4 med 17, ser vi at 4 er dekket med 17 fire ganger, så vi skriver 4 som det første tallet i kvoten, over 7.
- Multipliser og trekk for å få resten. Multipliser kvoten med nevneren, som betyr 4 × 4 = 16. Skriv 16 under 17, og trekk deretter 17 med 16 for å få resten, som er 1.
- Gjenta prosessen. Vi sammenligner igjen nevneren, som er 4, med det neste tallet, som er 1, merker at 4 er større enn 1, så "trekker" vi det neste tallet fra telleren, vi fortsetter med å sammenligne 4 med 12. Vi ser at 4 dekkes av 12 tre ganger ingen rest, så vi skriver 3 som det neste tallet i kvoten. Svaret er 43.
Trinn 2. Forbered et langt divisjonsproblem i binær
La oss ta 10101 11. Skriv som et problem for lang divisjon, ved å bruke 10101 som teller og 11 som nevner. La det være plass over det som et sted å skrive kvoten, og under den som et sted å skrive beregninger.
Trinn 3. Sammenlign nevneren med tellerens første siffer
Det fungerer på samme måte som lang divisjon i desimal, men det er faktisk mye lettere i det binære tallsystemet. I binær er det bare to alternativer, enten kan du ikke dele tallet med nevneren (som betyr 0) eller så er nevneren bare inkludert en gang (som betyr 1):
11> 1, så 11 er ikke "dekket av" 1. Skriv tallet 0 som det første tallet i kvotienten (over det første sifferet i telleren)
Trinn 4. Arbeid med neste nummer og gjenta til du får tallet 1
Følgende er de neste trinnene i vårt eksempel:
- Utlede det neste tallet fra telleren. 11> 10. Skriv 0 i kvoten.
- Senk det neste tallet. 11 <101. Skriv tallet 1 i kvoten.
Trinn 5. Finn resten av divisjonen
Som med desimaler med lang divisjon, multipliser tallet vi nettopp har fått (1) med nevneren (11), og skriv deretter resultatet under telleren parallelt med tallet vi nettopp har beregnet. I det binære tallsystemet kan vi oppsummere denne prosessen, fordi 1 x nevneren alltid er den samme som nevneren:
- Skriv nevneren under telleren. Her skriver du 11 parallelt med de tre første sifrene i telleren (101).
- Tell 101 - 11 for å få resten av divisjonen, som er 10. Se hvordan du trekker binære tall hvis du trenger å lære på nytt.
Trinn 6. Gjenta til problemet er løst
Reduser det neste tallet fra nevneren til resten av divisjonen for å få 100. Siden 11 <100, skriv 1 som det neste tallet i divisjonen. Fortsett beregningen som før:
- Skriv 11 under 100 og trekk deretter for å få 1.
- Senk det siste sifferet i telleren til 11.
- 11 = 11, så skriv 1 som det siste sifferet i kvoten (svar).
- Siden det ikke er noen rest, er beregningen fullført. Svaret er 00111, eller bare 111.
Trinn 7. Legg til radixpunkter om nødvendig
Noen ganger er resultatet av en beregning ikke et heltall. Hvis du fortsatt har divisjon igjen etter å ha brukt det siste sifferet, legger du til ".0" i telleren og "." til kvoten, slik at du fremdeles kan utlede et tall til og fortsette beregningen. Gjenta til du når ønsket presisjon, og rund deretter resultatet. På papir kan du runde ned ved å fjerne den siste 0, eller hvis den siste er en 1, kast den og legg den siste siste tallet til 1. I programmeringen, følg en av flere standard avrundingsalgoritmer for å unngå feil ved konvertering av binære tall til desimal og omvendt.
- Binær divisjon resulterer ofte i gjentatte brøkdeler, oftere enn samme prosess i desimalsystemet.
- Dette kalles mer ofte "radikspunktet", som gjelder en hvilken som helst base, fordi begrepet "desimalpunkt" bare gjelder i desimalsystemet.
Metode 2 av 2: Bruke den komplementære metoden
Trinn 1. Forstå det grunnleggende konseptet
En måte å løse divisjonsproblemet - på et hvilket som helst grunnlag - er å fortsette å trekke nevneren fra telleren, deretter resten, og telle hvor mange ganger denne prosessen kan gjentas før du får et negativt tall. Følgende eksempel er en beregning i basis ti, beregning 26 7:
- 26 - 7 = 19 (trekk fra 1 gang)
- 19 - 7 = 12 (2)
- 12 - 7 = 5 (3)
- 5 - 7 = -2. Negative tall, så ta et skritt tilbake. Resultatet er 3 og resten er delt med 5. Legg merke til at denne metoden ikke beregner brøkdelen av svaret.
Trinn 2. Lær hvordan du trekker fra med komplementer
Selv om du enkelt kan bruke metoden ovenfor i et binært system, kan vi også redusere bruken av en mer effektiv metode, noe som sparer tid når du programmerer datamaskinen for å gjøre binær divisjon. Dette er subtraksjon med komplementmetoden i binær. Her er det grunnleggende, som beregner 111 - 011 (sørg for at de to tallene er like lange):
- Finn ens komplement for det andre tallet, ved å trekke hvert siffer fra 1. Dette trinnet er enkelt å gjøre i det binære systemet ved å endre hver 1 til 0 og hver 0 til 1. I dette eksemplet, 011 til 100.
- Legg 1 til resultatet av beregningen: 100 + 1 = 101. Dette tallet kalles tos komplement, så subtraksjonen kan løses som et tillegg. I hovedsak er resultatet av denne beregningen som om vi legger til negative tall og ikke trekker fra positive tall, etter at denne prosessen er fullført.
- Legg resultatet til det første tallet. Skriv og løs tilleggsproblemet: 111 + 101 = 1100.
- Fjern flere tall. Fjern det første tallet fra beregningsresultatet for å få det endelige resultatet. 1100 → 100.
Trinn 3. Kombiner de to konseptene beskrevet ovenfor
Nå kjenner du subtraksjonsmetoden for å løse divisjonsproblemer, i tillegg til de tos komplementmetode for å løse subtraksjonsproblemer. Ved å bruke trinnene nedenfor kan du kombinere de to til en metode for å løse delingsproblemet. Hvis du vil, kan du prøve å løse det selv før du fortsetter.
Trinn 4. Trekk nevneren fra telleren og legg til de to komplementene
La oss jobbe med problemet 100011 000101. Det første trinnet er å løse 100011 - 000101, ved å bruke de tos komplementmetode for å gjøre denne beregningen til en sum:
- To komplement til 000101 = 111010 + 1 = 111011
- 100011 + 111011 = 1011110
- Fjern overflødige tall → 011110
Trinn 5. Legg 1 til resultatet av divisjonen
I et dataprogram er det her du legger til 1 i kvoten. Skriv notater i hjørnene på papiret slik at de ikke blandes med annet arbeid. Vi klarte å trekke fra en gang, så resultatet av divisjonen så langt er 1.
Trinn 6. Gjenta prosessen ved å trekke nevneren fra resten av beregningen
Resultatet av vår siste beregning er resten av divisjonen etter at nevneren er "dekket" en gang. Fortsett å legge til de to komplementene til nevneren ved hver repetisjon og fjern ekstra sifre. Legg 1 til kvoten på hver iterasjon, gjenta til du får resten av beregningen lik eller mindre enn nevneren:
- 011110 + 111011 = 1011001 → 011001 (kvot 1 + 1 = 10)
- 0110001 + 111011 = 1010100 → 010100 (kvotient 10 + 1 = 11)
- 010100 + 111011 = 1001111 → 001111 (11+1=100)
- 001111 + 111011 = 1001010 → 001010 (100+1=101)
- 001010 + 111011 = 10000101 → 0000101 (101+1=110)
- 0000101 + 111011 = 1000000 → 000000 (110+1=111)
- 0 er mindre enn 101, så vi stopper her. Svaret på denne delingsprosessen er 111. Mens resten av divisjonen er det endelige resultatet av subtraksjonsprosessen, i dette tilfellet 0 (ingen rest).
Tips
- Instruksjoner for å heve (legge til 1), senke (trekke fra 1) eller fjerne fra stakken (popstabel) bør vurderes før du bruker binær matematikk i et maskininstruksjonssett.
- De to komplementmetoden for subtraksjon vil ikke fungere hvis tallene har et annet antall sifre. For å fikse dette, legg til en null i begynnelsen av tallet for et mindre tall.
- Ignorer negative tall i negative binære tall før du beregner, bortsett fra for å avgjøre om svaret er positivt eller negativt.