Monday, 27 November 2017

Dela med två metod binära options


En vän av mig hade en läxauppgift där han behövde konvertera decimal (bas 10) - nummer till binärt. Jag hjälpte honom ut och förklarade något av de sätt jag lärde mig att göra detta. Hur jag visade honom var att upprepade gånger dela upp antalet med 2 och sedan ta resten, binärtalet kommer att läsas från botten till toppen. Efter att jag visat honom algoritmen och ett exempel, satte han sig för att göra resten av hans problem. Idag skickade han mig ett mail och frågade mig varför den här metoden fungerar. Jag var typ av chockad över den frågan, jag har aldrig gett en andra tanke på varför det här fungerar, jag gjorde bara som jag fick höra att veta att om jag utförde denna algoritm skulle jag alltid få det rätta svaret i binär. Jag tänkte på det för ett tag och kan fortfarande inte se ut för varför den här metoden fungerar, vilket som helst hjälp skulle uppskattas. Detta är inte en uppgift, bara min nyfikenhet och frustration vid att inte fråga denna fråga förut. Har du något emot att förklara hur du gick ifrån: ne0times 20 e1times 21 cdots ektimes 2k ne0 2Bigl (e1 e2times 2 cdots ektimes 2 Bigr), följer jag inte övergången till den slutna formen. Kom ihåg meningen med bas 10 notation när du skriver ett nummer som dnd cdots d2d1d0 där di är ithcifret (från höger till vänster), det du säger är att numret är lika med: d0times 100 d1times 101 d2times 102 cdots dntimes 10n . Så exempelvis representerar 5381 talet 1times 100 8times 101 3times 102 5times 103 1 80 300 5000. Att skriva ett tal i binärt (bas 2) är tänkt att representera numret på exakt samma sätt men med krafter på 2 i stället av krafter på 10: uttrycket ekcdots e3e2e1e0 representerar numret 20 gånger 21 e2times 22 e3times 23 cdots ektimes 2k. Eftersom varje summan förutom den första är en multipel av 2, kan vi skriva: börja nampe0times 20 e1times 21 cdots ektimes 2k ampe0 left (e1times 2right) left (e2times 4right) cdots left (ektimes 2 höger) amp e0 left (2 times e1right ) vänster (2times (e2times 2) right) cdots vänster (2times (ektimes 2) right) amp e0 2Bigl (e1 (e2times 2) cdots (ektimes 2) Bigr). slutet Det betyder att när du delar n med 2 får du en återstod av e0 (den högsta siffran i bas 2-uttrycket av n) och en kvotient av q1e1times 20 e2times 21 cdots ektimes 2. Nu kan du bestämma nästa binära siffra i n genom att upprepa processen med q1: vi skriver q1 e1 2Bigl (e2 e3times 2 cdots ektimes 2 Bigr), så återstoden av delningen q1 vid 2 är den näst sista siffran i binäruttrycket av n , och kvoten är q3, med q3 e2 e3times 2 cdots ektimes 2. Skölj, skölj och upprepa tills återstående kvotient är 0. besvarad 28 november kl 1: 56Hur att dela binära nummer Binära delningsproblem kan lösas med hjälp av lång division, vilket är en användbar metod för att undervisa processen för dig själv eller skriva en enkel datorprogram. Alternativt tillhandahåller komplementmetoden för upprepad subtraktion ett tillvägagångssätt som du kanske inte är bekant med, även om det inte är lika vanligt i programmeringen. 1 Maskinspråk använder vanligtvis en estimeringsalgoritm för ökad effektivitet, men dessa beskrivs inte här. 2 steg Redigera Metod En av två: Använd Long Division Redigera decimal decimal lång division. Om det har varit ett tag sedan du delade med vanliga decimaltal (bas tio), granska grunderna med problemet 172 4. Annars går du vidare till nästa steg för att lära dig samma process i binär. Utdelningen divideras med divisorn. och svaret är kvoten. Jämför divisorn till den första siffran i utdelningen. Om divisorn är det större antalet, fortsätt att lägga siffror till utdelningen tills divisorn är det mindre talet. (Om du exempelvis beräknar 172 4 jämför vi 4 och 1, notera att 4 gt 1 och jämför 4 till 17 istället.) Skriv den första siffran i kvoten ovanför den sista utdelningsciffran du använde i jämförelsen. När vi jämför 4 och 17 ser vi att 4 går in i 17 fyra gånger, så vi skriver 4 som den första siffran i vår kvot, över 7. Multiplicera och subtrahera för att hitta resten. Multiplicera kvotciffran med divisorn, i det här fallet 4 x 4 16. Skriv 16 under 17, dra sedan 17-16 för att hitta resten, 1. Upprepa. Återigen jämför vi divisorn 4 med nästa siffra, 1, notera att 4 gt 1, och ta ner nästa siffra i utdelningen, för att jämföra 4 med 12 istället. 4 går in i 12 tre gånger utan återstod, så skriver vi 3 som nästa siffran i kvoten. Svaret är 43. Ställ in det binära långdistansproblemet. Låt oss använda exemplet 10101 11. Skriv detta som ett långdistansproblem, med 10101 som utdelning och 11 som divisor. Lämna utrymme ovan för att skriva kvoten och nedan för att skriva dina beräkningar. Jämför divisor till utdelningens första siffra. Detta fungerar precis som ett decimals långdistributionsproblem, men det är faktiskt ganska lättare i binärt. Endera kan du inte dela numret av divisorn (0) eller divisorn kan gå på en gång (1): 11 gt 1, så 11 kan inte gå in i 1. Skriv en 0 som kvotens första siffra (ovanför den första siffran av utdelningen). Tack till nästa siffra och upprepa tills du får en 1. Här är nästa steg till vårt exempel: Ta ner nästa siffra i utdelningen. 11 gt 10. Skriv en 0 i kvoten. Ta ner nästa siffra. 11 lt 101. Skriv en 1 i kvoten. Hitta resten. Liksom i decimallängdsdelningen multiplicerar vi den siffra vi just hittat (1) med divisorn (11) och skriver resultatet under vår utdelning i linje med den siffra vi just beräknat. I binär kan vi genväga detta, eftersom 1 x divisorn alltid motsvarar divisorn: Skriv divisor under utdelningen. Här skriver vi 11 inriktade under de tre första siffrorna (101) av utdelningen. Beräkna 101 - 11 för att få resten, 10. Se hur man subtraherar binära nummer om du behöver en recension. Upprepa tills problemet är klart. Ta ner nästa siffra av divisorn till resten för att göra 100. Sedan 11 lt 100, skriv en 1 som nästa siffra av kvoten. Fortsätt problemet som tidigare: Skriv 11 under 100 och subtrahera för att få 1. Ta ner den slutliga siffran i utdelningen för att göra 11. 11 11, skriv så en 1 som kvittos sista siffra (svaret). Det finns ingen återstod, så problemet är fullständigt. Svaret är 00111. eller helt enkelt 111. Lägg till en radix-punkt om det behövs. Ibland är resultatet inte ett heltal. Om du fortfarande har en rest efter att du har använt den slutliga siffran, lägg till en .0 till utdelningen och a. till din kvot, så du kan ta ner en annan siffra och fortsätta. Upprepa tills du når önskad specificitet och svara sedan på svaret. På papper kan du runda ner genom att hugga bort den sista 0, eller om den sista siffran är en 1, släpp den och lägg till 1 till den nya sista siffran. Vid programmering följer du en av standardalgoritmerna för avrundning för att undvika fel vid omvandling mellan binära och decimaltal. 3 Binära delningsproblem slutar ofta med upprepade fraktioner, oftare än de förekommer i decimaltal. 4 Det här hänvisas till den mer generella termen radixpunkten, som gäller i vilken bas som helst, eftersom decimalpunkten endast används i decimalsystemet. 5 Metod Två av två: Använda komplementmetoden Redigera Förstå grundläggande begreppet. Ett sätt att lösa uppdelningsproblem i någon bas är att hålla subtraheraren dividender från utdelningen, då återstoden, medan man räknar upp antalet gånger du kan göra det innan du får ett negativt tal. Heres ett exempel i bas tio, lösa problemet 26 7: 26 - 7 19 (subtraherad 1 gång) 19 - 7 12 (2) 12 - 7 5 (3) 5-7 -2. Negativt nummer, så säkerhetskopiera. Svaret är 3 med en återstod av 5. Observera att den här metoden inte beräknar något icke-heltal av svaret. Lär dig att subtrahera genom kompletteringar. Medan du enkelt kan använda metoden ovan i binär kan vi också subtrahera med en mer effektiv metod, vilket sparar tid när du programmerar datorer för att dividera binära tal. Detta är subtraktionen av komplementmetoden i binär. Här är grunderna, beräkning 111 - 011 (se till att båda siffrorna är lika långa): Hitta de andra komplementen på andra termen, subtrahera varje siffra från 1. Detta görs enkelt i binärt genom att växla mellan 1 och 0 och var och en 0 till 1. 6 7 I vårt exempel blir 011 100. Lägg till en till resultatet: 100 1 101. Detta kallas twos komplementet och låter oss utföra subtraktion som ett tilläggsproblem. 8 I huvudsak är resultatet som om vi lagt till ett negativt tal istället för att subtrahera en positiv, när vi avslutar processen. Lägg till resultatet till första termen. Skriv och lösa tilläggsproblemet: 111 101 1100. Släng bort bollsiffret. Kassera den första siffran i ditt svar för att få det slutliga resultatet. 1100 100. Kombinera de två begreppen ovan. Nu vet du subtraktionsmetoden för att lösa uppdelingsproblem, och två-komplementmetoden för att lösa subtraktionsproblem. Du kan kombinera detta till en metod för att lösa uppdelingsproblem, med hjälp av stegen nedan. 9 Om du vill kan du försöka hitta det själv innan du fortsätter. Subtrahera divisören från utdelningen genom att lägga till två komplement. Låt oss gå igenom problemet 100011 000101. Det första steget är att lösa 100011 - 000101, med hjälp av två-komplementmetoden för att göra det till ett tilläggsproblem: Twos-komplementet till 000101 111010 1 111011 100011 111011 1011110 Släng bort bärbiten 011110 Lägg till en till kvoten. I ett datorprogram är det här punkten där du ökar kvoten med en. På papper gör du en anteckning någonstans i ett hörn där det inte blir förvirrat med ditt andra arbete. Weve framgångsrikt subtraherade en gång, så kvoten hittills är 1. Repetera genom att subtrahera divisorn från resten. Resultatet av vår senaste beräkning är resten kvar efter att divisören gick i en gång. Fortsätt lägga till divisorens två komplement varje gång och kassera bärbiten. Lägg till en till kvoten varje gång, upprepa tills du får en rest som är lika med eller mindre än din divisor: 10 011110 111011 1011001 011001 (kvot 1110) 011001 111011 1010100 010100 (kvot 10111) 010100 111011 1001111 001111 (111100) 001111 111011 1001010 001010 (1001101) 001010 111011 10000101 0000101 (1011110) 0000101 111011 1000000 000000 (1101111) 0 är mindre än 101, så vi slutar här. Kvoten 111 är svaret på divisionsproblemet. Resten är slutresultatet av vårt subtraktionsproblem, i detta fall 0 (ingen återstående). Labs: Kryptografi. Del 1. Omvandling från decimaler till binär Det finns två metoder för att konvertera decimaler till binära. Här presenterar vi båda metoderna med nummer 85 som ett exempel. Första metoden. Vi försöker representera nummer 85 som summan av befogenheter från två som börjar från de största. Hitta den största effekten av 2 som inte är mer än 85. Det är 64 2 6. Subtrahera det: 85 - 2 6 21. Resultatet kommer alltid att vara mindre än kraften hos två som subtraherades (kan du räkna ut varför). Nu måste vi representera 21 som summan av krafterna på 2. Fortsätt som tidigare: Den största kraften hos två som inte är mer än 21 är 16 2 4. Subtrahera den: 21 - 2 4 5. Nu måste vi representera 5 som summan av krafterna på 2. Fortsätt som tidigare: den största effekten hos två som inte är mer än 5 är 4 2 2. Subtrahera den: 5 - 2 2 1. Vi kan representera 1 som 2 0. Vi har det 85 2 6 2 4 2 2 2 0. Detta är detsamma 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ära representationen av 85 ges av koefficienterna i denna representation som anges en efter en, med början på den högsta effekten av 2: 1010101. Andra metoden. Denna metod bygger på två observationer. Första observation: Den sista siffran i binär representation är alltid resten av numret när den delas av två. Det vill säga det är 1 om talet är udda, och 0 om det är jämnt. Andra observation: Om vi ​​raderar den sista siffran i ett binärt tal får vi ett nytt binärt tal som motsvarar hälften av det ursprungliga numret, med bråkdelen av 12 tappade om originalnumret var udda. Tänk exempelvis att numret n vars binära representation är abcd är lika med en 2 3 b 2 2 c 2 1 d 2 0. Notera då att n 2 (a 2 2 b 2 1 c 2 0) d. Så n är även om d0 och udda om d1 (första observationen). Observera också att om vi delar n till två och släpper någon fraktion av 12 (om d är udda), så får vi en 2 2 b 2 1 c 2 0. som har binär representation abc, vilket är vad du får om du raderar sista binära siffran i n (andra observation). Även om vi bara visade våra observationer med 4-siffriga binära tal fungerar samma argument oavsett hur många siffror vi har. Numret 85 är udda. Därför är den sista siffran 1. Subtrahera 1, vi får 84. Då delar vi 84 av 2 får vi 42. Binär representation av 42 kommer att få oss alla andra siffror framför den sista. Så binär represenation av 85binary representation of 42 1. Numret 42 är jämnt, varför dess sista binära siffra är 0. Delar 42 av 2 får vi 21. Så binär representation av 85binary representation av 21 01. 21: e sista binära siffran är 1 (eftersom den är udda). Subtrahera 1 och dela med två igen: vi får 10. Så binär representation av 85binary representation av 10 101. 10: e sista binära siffran är 0. 102 5. Så binär representation av 85 binär representation av 5 0101. 5: e sista binära siffran är 1. Då 42 2. Så binär representation av 85binary representation av 2 10101. 2: e sista binära siffran är 0. Delar 2 av 2, vi får 1. Så binär representation av 85binary representation av 1 010101. Nu representerar binärsiffeln 1 talet 1. Så den binära representationen av 85 är 1010101. Nedan finns ett interaktivt fönster där du kan öva det genererar slumptal för att du ska konvertera dem till binär: Övning av konvertering från decimaler till binär senast ändrad: augusti 2008

No comments:

Post a Comment