Monday 16 October 2017

Dele By 2 Metoden Binære Alternativer


En venn av meg hadde en lekseroppgave hvor han måtte konvertere desimal (base 10) tall til binær. Jeg hjalp ham ut og forklarte en av måtene jeg ble lært å gjøre dette. Måten jeg viste ham var å gjentatte ganger dele tallet med 2 og deretter ta resten, det binære nummeret vil være remainders lese fra bunn til topp. Etter at jeg viste ham algoritmen og et eksempel, satte han seg for å gjøre resten av sine problemer. I dag sendte han meg en e-post og spurte meg hvorfor denne metoden virker. Jeg var liksom sjokkert av det spørsmålet, jeg har aldri gitt et sekund trodd på hvorfor dette virker, jeg gjorde bare som jeg ble fortalt å vite at hvis jeg utførte denne algoritmen, ville jeg alltid få det riktige svaret i binær. Jeg tenkte på det for en stund og fortsatt ikke synes å finne ut HVORFOR denne metoden virker, ville noen hjelp bli verdsatt. Dette er ikke et oppdrag, bare min nysgjerrighet og frustrasjon ved ikke å stille dette spørsmålet før. Har du noe imot å forklare hvordan du gikk fra: ne0times 20 e1times 21 cdots ektimes 2k ne0 2Bigl (e1 e2times 2 cdots ektimes 2 Bigr), følger jeg ikke overgangen til lukket form. Husk betydningen av basen 10 notasjon når du skriver et tall som dnd cdots d2d1d0 hvor di er ith sifferet (fra høyre til venstre), det du sier er at tallet er lik: d0times 100 d1times 101 d2times 102 cdots dntimes 10n . Så for eksempel representerer 5381 tallet 1times 100 8times 101 3times 102 5times 103 1 80 300 5000. Skrive et tall i binær (base 2) er ment å representere tallet på nøyaktig samme måte, men med krefter på 2 i stedet av krefter på 10: uttrykket ekcdots e3e2e1e0 representerer nummeret nei ganger 20 e1times 21 e2times 22 e3times 23 cdots ektimes 2k. Siden hver summ unntatt den første er et flertall av 2, kan vi skrive: begynn nampe0times 20 e1times 21 cdots ektimes 2k ampe0 left (e1times 2right) left (e2times 4right) cdots left (ektimes 2 høyre) amp e0 left (2 times e1right ) venstre (2times (e2times 2) høyre) cdots venstre (2times (ektimes 2) right) amp e0 2Bigl (e1 (e2times 2) cdots (ektimes 2) Bigr). slutten Det betyr at når du deler n ved 2 får du en gjenværende del av e0 (det høyeste tallet i basis 2-uttrykket av n) og et kvotient av q1e1times 20 e2times 21 cdots ektimes 2. Nå kan du bestemme det neste binære tallet i n ved å gjenta prosessen med q1: vi skriver q1 e1 2Bigl (e2 e3times 2 cdots ektimes 2 Bigr), så resten av deling q1 ved 2 er det nest siste sifferet i binær uttrykk for n , og kvotienten er q3, med q3 e2 e3times 2 cdots ektimes 2. Skyll, skyll og gjenta til resten kvotienten er 0. besvart 28. november kl. 01:56 Slik deler du binære tall. Binære delingsproblemer kan løses ved hjelp av lang divisjon, noe som er en nyttig metode for å lære prosessen til deg selv eller skrive en enkel dataprogram. Alternativt gir komplementmetoden for gjentatt subtraksjon en tilnærming du kanskje ikke er kjent med, selv om den ikke er så vanlig brukt i programmeringen. 1 Maskinspråk bruker vanligvis en estimeringsalgoritme for større effektivitet, men disse beskrives ikke her. 2 trinn Rediger Metode En av to: Bruk Long Division Rediger desimal langdistanse. Hvis det har vært en stund siden du gjorde lang divisjon med vanlige desimalnumre (base ti), vurder grunnleggende ved å bruke problemet 172 4. Ellers hopper du videre til neste trinn for å lære den samme prosessen i binær. Utbyttet er delt av divisoren. og svaret er kvotienten. Sammenlign divisoren til det første sifferet i utbyttet. Hvis divisoren er det større tallet, fortsett å legge til tall til utbyttet til divisoren er det minste tallet. (Hvis du for eksempel beregner 172 4, sammenligner vi 4 og 1, merk at 4 gt 1, og sammenlign 4 til 17 i stedet.) Skriv det første sifferet i kvoten over det siste utbytte sifferet du brukte i sammenligningen. Sammenligner 4 og 17 ser vi at 4 går inn i 17 fire ganger, så vi skriver 4 som første siffer i kvoten vår, over 7. Multipliser og trekk for å finne resten. Multipliser kvantesifret med divisoren, i dette tilfellet 4 x 4 16. Skriv 16 under 17, trekk deretter 17-16 for å finne resten, 1. Gjenta. Igjen, sammenligner vi divisoren 4 med neste siffer, 1, merk at 4 gt 1, og hent ned neste siffer i utbyttet, for å sammenligne 4 med 12 i stedet. 4 går inn i 12 tre ganger uten gjenværende, så vi skriver 3 som neste siffer i kvotienten. Svaret er 43. Sett opp det binære langdistribusjonsproblemet. La oss bruke eksemplet 10101 11. Skriv dette som et langdistribusjonsproblem, med 10101 som utbytte og 11 som divisor. Gi plass over for å skrive kvoten, og under for å skrive beregningene dine. Sammenlign divisoren til det første sifferet i utbyttet. Dette fungerer akkurat som et desimal langdistribusjonsproblem, men det er faktisk ganske enklere i binær. Enten kan du ikke dele tallet av divisoren (0) eller divisoren kan gå på en gang (1): 11 gt 1, så 11 kan ikke gå inn i 1. Skriv 0 som første siffer i kvoten (over det første sifferet av utbyttet). Tack på neste siffer og gjenta til du får en 1. Her er de neste par trinnene til vårt eksempel: Ta ned neste siffer i utbyttet. 11 gt 10. Skriv en 0 i kvoten. Ta ned neste siffer. 11 lt 101. Skriv en 1 i kvoten. Finn resten. Som i desimal lang divisjon, multipliserer vi sifferet vi nettopp har funnet (1) med divisoren (11), og skriver resultatet under utbyttet vårt justert med sifferet vi nettopp har beregnet. I binær kan vi snarvei dette, siden 1 x divisoren alltid tilsvarer divisoren: Skriv divisoren under utbytte. Her skriver vi 11 justert under de tre første sifrene (101) av utbyttet. Beregn 101 - 11 for å få resten, 10. Se hvordan du trekker binære tall hvis du trenger en anmeldelse. Gjenta til problemet er ferdig. Ta ned neste siffer av divisoren til resten for å gjøre 100. Siden 11 lt 100, skriv en 1 som neste siffer i kvotienten. Fortsett med problemet som før: Skriv 11 under 100 og trekk for å få 1. Ta ned det endelige sifferet i utbyttet for å gjøre 11. 11 11, skriv så 1 som det endelige sifferet i kvotienten (svaret). Det er ingen rest, så problemet er fullført. Svaret er 00111. eller bare 111. Legg til et radix-punkt om nødvendig. Noen ganger er resultatet ikke et heltall. Hvis du fortsatt har en gjenstand etter bruk av det endelige sifferet, legger du til .0 på utbyttet og a. til kvoten din, så du kan ta ned et annet tall og fortsette. Gjenta til du kommer til ønsket spesifisitet, og følg deretter svaret. På papir kan du rulle ned ved å hakke av den siste 0, eller hvis det siste sifferet er en 1, slipp det og legg til 1 til det siste siste sifferet. I programmering følger du en av standardalgoritmene for avrunding for å unngå feil når du konverterer mellom binære og desimaltall. 3 Binære delingsproblemer slutter ofte med repeterende brøkdeler, oftere enn de forekommer i desimaltall. 4 Dette refereres til med det mer generelle uttrykket radix-punkt, som gjelder i hvilken som helst base, siden desimaltegnet bare brukes i desimalanlegget. 5 Metode To av to: Bruke komplementmetoden Rediger Forstå det grunnleggende konseptet. En måte å løse divisjonsproblemer på i en base er å beholde divisoren fra utbyttet, da resten, mens du teller opp antall ganger du kan gjøre det før du får et negativt nummer. Heres et eksempel i base ti, løse problemet 26 7: 26 - 7 19 (trukket 1 gang) 19 - 7 12 (2) 12 - 7 5 (3) 5 - 7 -2. Negativt nummer, så sikkerhetskopiere. Svaret er 3 med en gjenstand på 5. Merk at denne metoden ikke beregner et ikke-heltall av svaret. Lær å trekke av ved utfyllinger. Mens du enkelt kan bruke metoden ovenfor i binær, kan vi også trekke av med en mer effektiv metode, noe som sparer tid når du programmerer datamaskiner til å dele binære tall. Dette er subtraksjonen ved hjelp av komplementmetoden i binær. Her er det grunnleggende, beregning 111 - 011 (sørg for at begge tallene er like lange): Finn de andre komplementene til andre sikt, trekker hvert siffer fra 1. Dette gjøres enkelt i binær ved å bytte hver 1 til 0 og hver 0 til 1. 6 7 I vårt eksempel blir 011 100. Legg til en til resultatet: 100 1 101. Dette kalles twos-komplementet, og lar oss utføre subtraksjon som et tilleggsproblem. 8 I hovedsak er resultatet som om vi la til et negativt tall i stedet for å trekke en positiv, når vi er ferdig med prosessen. Legg til resultatet til første semester. Skriv og løse tilleggsproblemet: 111 101 1100. Slett bærecifret. Kast det første sifferet av svaret ditt for å få det endelige resultatet. 1100 100. Kombiner de to konseptene ovenfor. Nå vet du subtraksjonsmetoden for å løse oppdelingsproblemer, og to-komplementmetoden for å løse subtraksjonsproblemer. Du kan kombinere dette til en metode for å løse oppdelingsproblemer ved å bruke trinnene nedenfor. 9 Hvis du vil, kan du prøve å finne det selv før du fortsetter. Trekk divisoren fra utbyttet ved å legge til to komplementer. Lar oss gå gjennom problemet 100011 000101. Det første trinnet er å løse 100011 - 000101, ved hjelp av to-komplementmetoden for å gjøre det til et tilleggsproblem: Twos komplement til 000101 111010 1 111011 100011 111011 1011110 Slett bærebiten 011110 Legg til en til kvoten. I et dataprogram er dette punktet hvor du øker kvoten med en. På papir gjør du et notat et sted i et hjørne der det ikke blir forvirret med ditt annet arbeid. Weve trekkes vellykket en gang, så kvotienten så langt er 1. Gjenta ved å trekke divisoren fra resten. Resultatet av vår siste beregning er resten igjen etter at divisoren gikk inn en gang. Fortsett å legge til todelt komplement av divisoren hver gang og kaste bærebiten. Legg til en til kvoten hver gang, gjenta til du får en rest som er lik eller mindre enn divisoren din: 10 011110 111011 1011001 011001 (kvotient 1110) 011001 111011 1010100 010100 (kvoter 10111) 010100 111011 1001111 001111 (111100) 001111 111011 1001010 001010 (1001101) 001010 111011 10000101 0000101 (1011110) 0000101 111011 1000000 000000 (1101111) 0 er mindre enn 101, så vi stopper her. Kvotienten 111 er svaret på divisjonsproblemet. Resten er sluttresultatet av vårt subtraksjonsproblem, i dette tilfellet 0 (ingen rest). Labs: Kryptografi. Del 1. Konvertering fra desimaler til binær Det finnes to metoder for å konvertere decimaler til binære. Her presenterer vi begge metodene ved å bruke nummer 85 som et eksempel. Første metode. Vi prøver å representere tallet 85 som summen av krefter på to som starter fra de største. Finn den største kraften på 2 som ikke er over 85. Det er 64 2 6. Trekk det fra: 85 - 2 6 21. Resultatet vil alltid være mindre enn kraften til to som ble trukket ned (kan du finne ut hvorfor). Nå må vi representere 21 som summen av krefter på 2. Fortsett som før: Den største kraften til to som ikke er mer enn 21 er 16 2 4. Trekk den fra: 21 - 2 4 5. Nå må vi representere 5 som summen av krefter på 2. Fortsett som før: Den største kraften til to som ikke er mer enn 5 er 4 2 2. Trekk den: 5 - 2 2 1. Vi kan representere 1 som 2 0. Vi fikk det 85 2 6 2 4 2 2 2 0. Dette er det samme som: 85 1 2 6 0 2 5 1 2 4 0 2 3 1 2 2 0 2 1 1 2 0. Den binære representasjonen på 85 er gitt av koeffisientene i denne representasjonen oppført den ene etter den andre, med den høyeste effekten på 2: 1010101. Andre metode. Denne metoden er basert på to observasjoner. Første observasjon: Det siste sifferet i binær representasjon er alltid resten av nummeret når delt av to. Det vil si at det er 1 hvis tallet er merkelig, og 0 hvis det er jevnt. Andre observasjon: Hvis vi sletter det siste sifferet i et binært tall, får vi et nytt binærtall som er lik halvparten av det opprinnelige nummeret, med brøkdel av 12 falt hvis det opprinnelige nummeret var merkelig. For eksempel, vurder tallet n hvis binær representasjon er abcd, er lik en 2 3 b 2 2 c 2 1 d 2 0. Legg merke til at n 2 (a 2 2 b 2 1 c 2 0) d. Så n er selv om d0 og oddetall d1 (første observasjon). Vær også oppmerksom på at hvis vi deler n for to og slipper noen brøkdel av 12 (hvis d er merkelig), så får vi en 2 2 b 2 1 c 2 0. som har binær representasjon abc, som er hva du får hvis du sletter siste binære siffer av n (andre observasjon). Selv om vi bare beviste våre observasjoner med 4-sifret binære tall, fungerer det samme argumentet uansett hvor mange sifre vi har. Tallet 85 er merkelig. Derfor er siste siffer 1. Subtrahere 1, vi får 84. Da deler vi 84 av 2 får vi 42. Binær representasjon på 42 vil gi oss alle andre sifre foran det siste. Så binær representasjon av 85binary representasjon av 42 1. Tallet 42 er jevnt, derfor er det siste binære sifferet 0. Deler 42 av 2 vi får 21. Så binær representasjon av 85binary representasjon av 21 01. 21s siste binære siffer er 1 (som det er merkelig). Subtrahere 1 og divisjon med to igjen: vi får 10. Så binær representasjon av 85binary representasjon på 10 101. 10s siste binære siffer er 0. 102 5. Så binær representasjon av 85binary representasjon av 5 0101. 5s siste binære siffer er 1. Så 42 2. Så binær representasjon av 85binary representasjon av 2 10101. 2s siste binære siffer er 0. Deler 2 av 2, vi får 1. Så binær representasjon av 85binary representasjon av 1 010101. Nå representerer binærtallet 1 tallet 1. Så den binære representasjonen av 85 er 1010101. Nedenfor er det et interaktivt vindu der du kan øve det, genererer tilfeldige tall for at du skal konvertere dem til binær: Øvelse Konvertering fra desimaler til binær sist endret: august 2008

No comments:

Post a Comment