Skip to main content

1s Komplement Og 2s Komplement I Binær Alternativ


Legg til de samme tallene -3 5 2 FC 05 01 01 Å legge bære 01 til LSB 01 gir det riktige resultatet 01 01 02.Så blir 1 s komplementssum gjort ved å summere tallene og legge til bære eller fører til resultatet. Velg at vi har en 8-biters, 2 s-komplement, maskin og send pakken. Hvor 00 er sjekksumfeltet. La oss beregne og verifisere Internett-sjekksummen. Dette er resultatet av det normale 2 s-komplementet tillegget 1 s-komplementet summen krever tillegg av bære til 8-bitordet, selv om vi ikke får det samme resultatet. så er 1 s komplementsummen av FE 05 04. Den 1 s-komplementet til 1 s-komplementsummen, vil sjekksummen være. og pakken vil bli sendt som. Nå mottar vi i mottakersiden alle mottatte byte, inkludert sjekksummen igjen ved hjelp av 2 s komplementrepresentasjon. FE 05 FB 01 FE. Den 1 s komplementssummen er som kontrollerer at overføringen var OK, se nedenfor. Et mer komplekst eksempel 32-bits maskin. Som vist i RFC 1071, er sjekksumberegningen gjort i følgende måte. 1 Tilgrensende oktetter som skal kontrolleres, er parret til å danne 16-biters heltall, og 1 s komplementsummen av disse 16-bits heltallene dannes. 2 For å generere et kontrollsum, blir kontrollsumfeltet i seg selv fjernet, komplementssummen på 16 bit 1 er beregnet over de aktuelle oktene, og 1 s-komplementet til denne summen er plassert i kontrollsumfeltet. 3 For å sjekke et kontrollsum beregnes 1 s komplementssum over samme sett med oktetter, inkludert sjekksumfeltet. Hvis resultatet er alle 1 bit -0 i 1 s komplementarithetikk, lykkes sjekken.01 00 F2 03 F4 F5 F6 F7 00 00. 00 00 er kontrollsumfeltet. Form 16-biters ord.0100 F203 F4F5 F6F7.Kalkuler 2s komplement sum.0100 F203 F4F5 F6F7 0002 DEEF lagre summen i et 32-biters ord. Addd bærer 0002 til få 16-bit 1 s komplement sum. DEEF 002 DEF1.Kalkuler 1 s komplement av 1 s komplement sum. We sender pakken inkludert sjekksum 21 0E.01 00 F2 03 F4 F5 F6 F7 21 0E. At mottaket. 0100 F203 F4F5 F6F7 210E 0002 FFFD FFFD 0002 FFFF. Som sjekker OK, kan det se ut for å bruke et 1-komplement-tillegg på 2 s komplementmaskiner. Denne metoden har imidlertid sine egne fordeler. Det viktigste er at det er endian uavhengig Little Endian datamaskiner lagrer hex-numre med LSBs siste Intel-prosessorer, for eksempel Big Endian-datamaskiner, legger LSB første IBM mainframe s for eksempel Når bære legges til LSB for å danne 1 s komplementssum se eksempelet det spiller ingen rolle om vi legger til 03 01 eller 01 03 Resultatet er det samme. Andre fordeler inkluderer enkelhet å sjekke overføringen og kontrollsummen beregning pluss en rekke måter å øke hastigheten på beregningen ved å oppdatere bare IP-felt som har blitt endret. Mer TCP IP Software Development Info at. Two s komplement er en smart måte å lagre heltall på, slik at vanlige matteproblemer er veldig enkle å implementere. forstå, du må tenke på tallene i binær. Det sier i utgangspunktet. for null, bruk alle 0 s. for positive heltall, begynn å telle opp, med maksimalt 2 antall biter - 1 -1. For negative heltall, gjør du nøyaktig det samme, men bytt rollen til 0 s og 1 s så i stedet for å starte med 0000, start med 1111 - det er komplementdelen. Vi prøver det med en mini-byte på 4 biter, vi vil kalle det en nibble - 1 2 a byte.0100 til 0111 - fire til syv. Det er så langt vi kan gå positivt 2 3 -1 7. 1111 - negativ 1.1110 - negativ to.1101 - negativ tre.1100 til 1000 - negativ fire til negativ åtte. Merk at du får en ekstraverdi for negativer 1000 -8 at du ikke t for positive Dette skyldes at 0000 brukes til null Dette kan betraktes som Nummerlinje av datamaskiner. Distinguishing mellom positive og negative tall. Dermed får den første biten rollen som tegnbit, da den kan brukes til å skille mellom positive og negative desimalverdier. Hvis den mest signifikante biten er 1 da binæret kan sies å være negativt, hvor som om den mest signifikante biten venstre er 0, kan du si skille desimalverdien er positiv. Jeg lurer på om det kunne forklares noe bedre enn Wikipedia-artikkelen. Det grunnleggende problemet at du prøver å løse med to s komplementrepresentasjon, er problemet med å lagre negative heltall. Først vurder et usignert heltall som er lagret i 4 biter. Du kan ha følgende. Disse er usignerte fordi det ikke er noen indikasjon på om de er negativt eller positivt. Signaturstørrelse og overskytende notering. For å lagre negative tall kan du prøve en rekke ting. Først kan du bruke tegnstørrelse notasjon som tilordner den første bit som en tegnbit for å representere - og de gjenværende bitene representerer størrelsen So bruker 4 biter igjen og antar at 1 betyr - og 0 betyr at du har. Så ser du problemet der Vi har positiv og negativ 0 Det større problemet er å legge til og subtrahere binære tall Kretsene som skal legges til og trekkes fra ved hjelp av tegnstyrken, vil være veldig komplekst. Et annet system er overskytende notasjon Du kan lagre negative tall, du blir kvitt de to nullerproblemet, men tillegg og subtraksjon forblir vanskelig. Så følger kommer to s komplement Nå kan du lagre positive og negative heltall og utføre aritmetikk med relativ letthet er en rekke metoder for å konvertere et tall til to s komplement Her er en. Konvert Decimal til To s Komplement. Konverter tallet til binær ignorerer tegnet for nå f. eks. 5 er 0101 og - 5 er 0101.If tallet er et positivt tall så er du ferdig, f. eks. 5 er 0101 i binær med to komplementnotasjoner. Hvis tallet er negativt then.3 1 finn komplementet inverter 0 s og 1 seg -5 er 0101 så å finne komplementet er 1010.3 2 Legg til 1 til komplementet 1010 1 1011 Derfor er -5 i to s komplement 1011.Så, hva hvis du ville gjøre 2 -3 i binær 2 -3 er -1 Hva ville du måtte gjøre hvis du brukte tegnstørrelse for å legge til disse tallene 0010 1101. Bruke to s komplement vurdere hvor enkelt det ville være. Konvertering To s Komplement til Decimal. Converting 1111 til decimal. Tallet starter med 1, så det er negativt, så vi finner komplement av 1111, som er 0000. Legg til 1 til 0000, og vi får 0001.Konvert 0001 til desimal, som er 1. Som de fleste forklaringene jeg har sett, er de ovenfor klare om hvordan man arbeider med 2 s komplement, men ikke Jeg forstår egentlig ikke hva de er matematisk, jeg vil prøve å gjøre det, for helheter i det minste, og jeg vil dekke litt bakgrunn som sannsynligvis er familia r først. På samme måte er binær en måte å skrive tall ved å bruke bare 0 og 1 etter samme generelle ide, men erstatte de 10s over med 2s. I binær er 1111 en måte å skrive på 1 2 3 1 2 2 1 2 1 1 2 0 og hvis du jobber med det, viser det seg å være like 15 base 10 Det er fordi det er 8 4 2 1 15. Dette er alt bra og bra for positive tall Det fungerer også for negative tall hvis du er villig å bare holde et minustegn foran dem, som mennesker gjør med desimaltall. Det kan til og med gjøres på datamaskiner, men jeg har ikke sett en slik datamaskin siden begynnelsen av 1970-tallet. Jeg skal legge grunnene til en annen diskusjon . For datamaskiner viser det seg å være mer effektivt å bruke en komplementrepresentasjon for negative tall. Og her er noe som ofte overses. Komplementnotater innebærer en slags omvendelse av tallene i tallet, selv de implisitte nullene som kommer før en normal positiv nummer Det er vanskelig, fordi spørsmålet oppstår alle de som kunne være et uendelig antall sifre som skal vurderes. Heldigvis representerer datamaskiner ikke uendelighet Tall er begrenset til en bestemt lengde eller bredde, hvis du foretrekker. Så la oss gå tilbake til positive binære tall, men med en bestemt størrelse vil jeg bruke 8 sifferbiter for disse eksemplene Så vårt binære nummer ville virkelig være 00001111 eller 0 2 7 0 2 6 0 2 5 0 2 4 1 2 3 1 2 2 1 2 1 1 2 0.To danne 2 s komplementet negative, supplerer vi først alle binære tall for å danne 11110000 og legg til 1 for å danne 11110001, men hvordan skal vi forstå det til å bety -15. Svaret er at vi endrer betydningen av høyordensbiten Denne biten vil være en 1 for alle negative tall. Endringen vil være å endre tegnet på sitt bidrag til verdien av nummeret det vises i Så nå er vår 11110001 forstått å representere - 1 2 7 1 2 6 1 2 5 1 2 4 0 2 3 0 2 2 0 2 1 1 2 0 Legg merke til at - foran dette uttrykket betyr det at tegnbiten bærer vekten -2 7 som er -128 base 10 Alle de andre posisjonene beholder den samme vekten de hadde i usignerte binære tall. Utarbeidelse av vår -15, det er -128 64 32 16 1 Prøv det på din kalkulator det er s -15. Av de tre viktigste måtene jeg har sett negative tall representert i datamaskiner, 2 s komplement vinner hendene ned for enkelhets skyld i generell bruk Det har en raritet, men siden det er binært, må det være et jevnt antall mulige bitkombinasjoner Hvert positivt tall kan parres med det negative, men det er bare ett null Negativt en null blir deg null Så det er en mer kombinasjon, tallet med 1 i tegnbiten og 0 overalt ellers Det tilsvarende positive tallet passer ikke inn i antall biter som brukes. Hva er enda mer merkelig om dette nummeret er at hvis du prøv å danne sin positive ved å supplere og legge til en, du får det samme negative nummeret tilbake. Det virker naturlig at null ville gjøre dette, men dette er uventet og ikke i det hele tatt den oppføringen vi er vant til fordi datamaskiner til side, tenker vi generelt på en ubegrenset tilførsel av sifre, ikke den s fastlengde aritmetikk. Dette er som toppen av et isbjerge av oddities Det er mer liggende i vente under overflaten, men det er nok for denne diskusjonen. Du kan nok finne mer hvis du forsker overløp for fastpunkts aritmetikk. Hvis du virkelig ønsker å komme inn i det, kan du også undersøke modulær aritmetikk.2 s komplement er veldig nyttig for å finne verdien av en binær, men jeg tenkte på en mye mer konsis måte å løse et slikt problem aldri sett noen andre publisere det. ta en binær, for eksempel 1101, som antar at rom 1 er tegnet lik -3. bruker 2 s komplement vi ville gjøre denne flipen 1101 til 0010 legg til 0001 0010 gir oss 0011 0011 i positiv binær 3 derfor 1101 -3. i stedet for alle vende og legge til, kan du bare gjøre den grunnleggende metoden for å løse for en positiv binær, kan si 0101 er 2 3 0 2 2 1 2 1 0 2 0 1 5. Gjør nøyaktig det samme konseptet med et negativt med en liten twist. take 1101, for eksempel. for det første nummeret i stedet for 2 3 1 8 do - 2 3 1 -8.then forts innså som vanlig, å gjøre -8 2 2 1 2 1 0 2 0 1 -3. Den beste måten, jeg kunne forstå 2 s komplement Etter å ha lest dette, kunne jeg forstå alle svarene på ovennevnte spørsmål dosdebug Apr 17 15 ved 5 31. Dette er en metode som er nevnt i boken Computer Systems A programmerer s perspektiv jimo 4 august kl 8 på 58. Dette er en mye raskere måte chanzerre 29. august kl. 11 56. To komplement er funnet ut ved å legge til ett til 1 komplement av gitt tall La oss si at vi må finne ut to komplementer på 10101, og så finne deres komplement, det vil si 01010 legg til 1 til dette resultatet, det vil si 01010 1 01011 som er det endelige svaret. Å se på to s komplementssystem fra en matematisk synspunkt er det virkelig fornuftig I ti s komplement, er ideen å i hovedsak isolere forskjellen. Eksempel 63 - 24 x. Vi legger til komplementet til 24 som egentlig er bare 100 - 24 Så egentlig er alt vi gjør, å legge til 100 på begge sider av ligningen. Nå er ligningen 100 63 - 24 x 100, det er derfor vi fjerner 100 eller 10 eller 1000 eller wh i all evighet. Du til den ubeleilig situasjonen å måtte trekke et tall fra en lang kjede av nuller, bruker vi et redusert radix komplement-system, i desimalsystemet, ni s komplement. Når vi presenteres med et nummer subtraheres fra en stor kjede av nines, vi trenger bare å vende om tallene. Eksempel 99999 - 03275 96724. Det er årsaken, etter ni s komplement, legger vi til 1. Som du sikkert vet fra barndomsmat, blir 9 10 ved å stjele 1 Så i utgangspunktet er det bare ti s komplement som tar 1 fra forskjellen. I binær er to komplementer likeverdige til ti s komplement, mens en er komplement til ni s komplement. Den primære forskjellen er at i stedet for å forsøke å isolere forskjellen med 10 magtbeføyelser som legger til 10, 100, etc i ligningen vi forsøker å isolere forskjellen med krefter av to. Det er derfor vi reverserer bitene. På samme måte som vår minuend er en kjede av niner i desimal, vår minuend er en kjede av dem i binær. Eksempel 111111 - 101001 010110.Beca bruk kjeder av dem er 1 under en fin kraft på to, de stjeler 1 fra forskjellen som ni s gjør i desimal. Når vi bruker negativt binært nummer s, er vi egentlig bare saying.1111 - 0101 1010.1111 0000 - 0101 x 1111.For å isolere x må vi legge til 1 fordi 1111 er en unna 10000 og vi fjerner den ledende 1 fordi vi bare har lagt den til den opprinnelige forskjellen.1111 1 0000 - 0101 x 1111 1.10000 0000 - 0101 x 10000.Just fjern 10000 fra begge sider for å få x, det er grunnleggende algebra. Mange av svarene så langt pent forklare hvorfor to s komplement brukes til å representere negativt tall, men ikke fortell oss hva to komplement nummer er, spesielt ikke hvorfor en 1 er lagt til, og faktisk ofte lagt til på feil måte. Forvirringen kommer fra en dårlig forståelse av definisjonen av et komplementnummer Et komplement er den manglende delen som ville gjøre noe komplett. Radix-komplementet til et n-siffernummer x i radix b er per definisjon b nx I binær 4 er representert med 100, som har 3 sifre n 3 og en radix av 2 b 2 Så radix-komplementet er b nx 2 3-4 8-4 4 eller 100 i binær. Men i binær å få et radix-komplement er ikke så enkelt som å få sitt reduserte radix-komplement , som er definert som b n-1 - y, bare 1 mindre enn radix-komplementet. For å få et redusert radix-komplement, viker du ganske enkelt alle tallene.100-011 redusert en radix-komplement. for å få radix to-komplementet , legger vi bare til 1, som definisjonen definert. 011 1 - 100 to komplement. Nå med denne nye forståelsen, la oss ta en titt på eksemplet gitt av Vincent Ramdhanie se ovenfor andre svar. begynnelsen av Vincent. Converting 1111 to decimal. Tallet starter med 1, så det er negativt, så vi finner komplementet til 1111, som er 0000 Legg 1 til 0000, og vi får 0001 Konverter 0001 til desimal, som er 1 Bruk den signere -1 Tada. Må forstås som. Tallet starter med 1, så det er negativt. Så vi vet at det er et tos komplement av noe verdi. x For å finne x representert ved dets to komplement, må vi først finne sin 1 s complement. two s komplement av x 1111 et komplement av x 1111-1 - 1110 x 0001, flip alle sifre. bruk tegnet - og svaret - x -1.Two s Complement. Thomas Finley, april 2000. Innhold og introduksjon. To komplement er ikke en komplisert ordning og er ikke godt betjent av noe lenge. Derfor, etter denne introduksjonen, som forklarer hva to komplement er og hvordan man bruker det, er det for det meste eksempler. To komplement er måten hver datamaskin jeg kjenner til, velger å representere heltall For å få de to s å komplementere negativ notering av et heltall, skriver du ut tallet i binær Du omdiriger deretter sifrene og legg til en til resultatet. Anta at vi jobber med 8 biters mengder for enkelhets skyld, og antar at vi vil finne hvordan -28 vil bli uttrykt i to komplementnotater. Først skriver vi ut 28 i binær form. Da vi omverter tallene 0 blir 1, blir 1 0. Det er slik man skulle skrive -28 i 8 bit binær. Konvertering fra To s Komplement. Bruk tallet 0xFFFFFFFF som et eksempel I binær er det. Hva kan vi si om dette tallet Det er første venstrebiten er 1, noe som betyr at dette representerer et tall som er negativt. Det er bare måten at ting er i to s-komplement, en ledende 1 betyr at tallet er negativt, en ledende 0 betyr tallet er 0 eller positivt. For å se hva dette tallet er negativt av, reverserer vi tegnet på dette nummeret, men hvordan gjør du det Klassens notater sier på 3 17 at for å reversere tegnet du bare svinger biter 0 går til 1 , og 1 til 0 og legg til en til det resulterende tallet. Omvendelsen av det binære tallet er, obv iously. Then vi legger til en. Så det negative av 0xFFFFFFFF er 0x00000001, mer kjent som 1 Så 0xFFFFFFFF er -1.Conversion to Two s Complement. Note at dette fungerer begge veier Hvis du har -30, og vil representere det i 2 s komplement, du tar den binære representasjonen av 30.Inverter sifferene. Omvendt tilbake til hex, dette er 0xFFFFFFE2 Og sannsynligvis antar du at du har denne koden. Det skal gi en utgang på -30 Prøv det hvis du liker. Ritmetisk med To komplement. En av de fine egenskapene til to s komplement er at tillegg og subtraksjon gjøres veldig enkelt. Med et system som to komplement, kan kretsene for tilsetning og subtraksjon forenes, mens ellers de må behandles som separate operasjoner. I eksemplene i dette avsnittet legger jeg til og subtraksjon i to komplement, men du vil merke at hver gang jeg gjør egentlige operasjoner med binære tall, legger jeg alltid til. Anta at vi vil legge til to tall 69 og 12 sammen hvis vi skal bruke desimal, vi ser e summen er 81 Men la s bruke binær i stedet, da det er hva datamaskinen bruker. Dette resulterer i 12 - 69 -57, som er riktig. Hvorfor Inversion og Adding One Works. Invert og legg til en Inverter og legg til en Det virker , og du vil kanskje vite hvorfor Hvis du ikke bryr deg, hoppe over dette, da det er lite viktig. Dette er bare ment for de nysgjerrige på hvorfor den heller merkelige teknikken faktisk gjør matematisk forstand. Inverting og legge til kan høres ut som en dum ting å gjøre, men det er egentlig bare en matematisk snarvei av en ganske enkel beregning. Morgen og Subtraksjon. Remember det gamle trikset vi lærte i første klasse for å låne en s fra fremtiden ti s steder å utføre en subtraksjon. Du kan ikke, så jeg Jeg går over det Som et eksempel vil jeg gjøre 93702 minus 58358.Nå, hva er svaret på denne beregningen Vi skal starte med minst signifikante siffer, og trekke termen etter term. Vi kan ikke trekke 8 fra 2, så vi ll låne et tall fra neste mest betydningsfulle plass tiotallet å gjøre det 12 minus 8 12 minus 8 er 4, og vi noterer et 1 siffer over ti s-kolonnen for å indikere at vi må huske å trekke av ved en på den neste iterasjonen. Denne neste iterasjonen er 0 minus 5 og minus 1, eller 0 minus 6 Igjen kan vi ikke gjøre 0 minus 6, så vi låner fra neste mest signifikante tall en gang til for å gjøre det 10 minus 6, som er 4. Denne neste iterasjonen er 7 minus 3 og minus 1 eller 7 minus 4 Dette er 3 Vi trenger ikke å låne denne tiden. Denne neste iterasjonen er 3 minus 8 Igjen må vi låne for å gjøre de 13 minus 8 eller 5.Denne neste iterasjonen er 9 minus 5 og minus 1 eller 9 minus 6 Dette er 3 Vi trenger ikke å låne denne tiden. Så 93702 minus 58358 er 35344.Morgen og det er Relevans til negativet til et tall. Når du vil finne det negative av et nummer, tar du nummeret, og trekk det fra null Nå antar vi at vi er veldig dumme, som en datamaskin, og i stedet for å bare skrive et negativt tegn foran et nummer A når vi trekker A fra 0, går vi faktisk gjennom trinnene å subtrahere A fra 0.Tak følgende idiotiske beregning på 0 minus 3.The Complete Program. inkludere stdio h inkludere conio h inkluderer matte h int en 9, b 9, c 9 tomt lesnummer int x tomt utskriftnummer int x tomt OnesComplement int x tomt addNumber int x, int y, int sum tomt TwosComplement int x int getSum int a, int b, int c int getCarry int a, int b, int c void copyArray int dest, int src void subNumber int x, int y, int sub void printMenu void main. int alternativ, ch clrscr mens 1 printMenu opsjon getch switch alternativ sak X tilfelle x retur tilfelle r tilfelle R printf nEnter a eller b ch getche printf hvis ch a ch A lesNumber a else readNumber b break case 1 printf nEnter a eller b ch getche printf hvis ch a ch A OnesComplement et annet OnesComplement b break. case 2 printf nEnter a eller b ch getche printf hvis ch a ch A TwosComplement a annet TwosComplement b pause tilfelle en sak En addNumber a, b, c pause tilfelle S undernummer a, b, c break void printMenu clrscr gotoxy 5,5 printf Les tPrint t1 sComplement t2 sComplement tAdd tSub teXit n printf En printNumber en printf B printNumbe rb printf C printNumber c printf n void copyArray int dest, int src int jeg for i 0i 8i dest i src jeg void addNumber int x, int y, int sum int jeg, s, bære 0 for i 0i 8i s getSum xi, yi , bære bære getCarry xi, yi, bære sum er int getCarry int a, int b, int c int sum abc bytte sum tilfelle 0 retur 0 tilfelle 1 retur 0 tilfelle 2 retur 1 standard retur 1 int getSum int a, int b, int c int sum abc bytter sum tilfelle 0 retur 0 tilfelle 1 retur 1 tilfelle 2 retur 0 standard retur 1 tomrom TwosComplement int x int temp int ut 9 copyArray ut, x OnesComplement ut addNumber ut, temp, x void OnesComplement int x int jeg for jeg 8i 0i-- xi 1-xi void printNumber int x int jeg for i 8i 0i-- printf d, x i. Next, vi skal bruke den til å implementere Booth s algoritmen. Denne bloggen skal være den ultimate ressursen for all programmering problemer på Internett Det vil inneholde førsteklasses ressurser på alle dagens teknologier --- C, etc, Java Core, Advanced, J2EE, Hibernate, Java Persistence et al, PHP, Joo mla, c, c og resten Så kom til bloggen og nyt, ikke glem å be om ytterligere avklaringer via kommentarfunksjonen Last ned TheHypatiaProject. Search denne blog. Terms of use. If du bruker noen kode fra denne bloggen i et prosjekt må du nevne meg Champak Roy som forfatteren inkluderer en lenke til denne bloggen. Amazing Amazon. Latest Posts. The Best of the Very Best. Windows Communication Foundation er Microsofts nye teknologi for implementering av Remote Procedure Calls. Det er ment å integrere alt. I det siste innlegget lærte vi hvordan å ringe en Web Se. Two s Complement Binære Numbers. Integers ikke bare har størrelse. De har også et tegn. Hvordan håndterer vi det i binær. Traight Binær. Det første alternativet er å ignorere skiltet og bare bruk alle tilgjengelige tall, som går fra 0 til 2 N -1 hvor N er antall biter i nummeret Det er det vi allerede diskuterte. Sign Plus Magnitude Binary. En annen tilnærming er å bruke en bit av nummeret som regel Den venstre mest, hva var opprinnelig mest si gnificant bit med verdi 2 N-1 for å representere tegn Dette etterlater N-1 biter til å representere verdi Dette er sjelden sett i instrumentasjonsverdenen. Hvorfor. Både 0 og -0 har separate representasjoner Dette gir to representasjoner av et nummer hvor i praksis , det er bare én betydning mesteparten av tiden - kontakt en teoretiker for å lære når 0 og -0 er forskjellige. Det viser seg å være mindre effektivt å designe maskinvare subtraksjon maskinvare for denne representasjonen enn for Two s Complement-koding. Det er mindre effektivt å designe dataomformere som bruker dette designet enn de som bruker Two s Complement-koding. Folk som tenker på positive og negative tall som funadmentally disjoint, er komfortable med Sign Plus Magnitude Binær koding De som ser heltallnummerlinjen som beskriver en enkelt, ensartet sett med tall som har 0 som midtpunkt, kan finne Sign Plus Magnitude Binary awkward. Examples for 4 bit tall, 0110 6, 1110 -6 siden 0 i ledebiten, 1 i ledebiten. Binær Addition. We trenger en kort side For rett binære tall, fungerer tillegg som du forventer å bruke stedverdi 0 0 0 ingen overraskelse 0 1 1 0 1 I binær er det ingen måte å ha et vist nummer annet enn 0 eller 1, så 1 1 0 i 1 s plass med 1 overført til neste mest signifikante plass 2 s plass Dette er akkurat som base 10 hvor 9 9 18 vi har 8 på 1 s plass, og de ytterligere 10 får båret en kolonne til til venstre Om hva vi gjør ting litt mer komplisert.10 01 01 10 11 i base 10, 2 1 1 2 3.10 10 100 eller, i base 10, 2 2 4.Two s Complement Binary. Two s Complement signerte heltall bruker en koding som er intuitiv for positive tall, men det tar noen vant til å bli vant til for negative tall Hvis den mest signifikante, venstre bit er 0, er tallet fortolket som positivt, og kodingen ser akkurat ut som rett binær Hvis blybiten er 1, tallet er negativt, men ikke bare lesing av bitene er misvisende For å konvertere et binært tall fra positivt til negativt, komplementerer vi ch angi alle 0 s til 1 s og Increment add 1 Vi kan gå fra negativ til positiv på samme måte Her er et eksempel ved hjelp av 4 biter igjenplement 1001.Increment 1010. Hvorfor vil vi bruke 1010 -6 Først må vi vise at komplementøkning returnerer 6 som et svar 0101.Increment 0110.What skal skje hvis vi legger til 6 og -6 Vi burde få 0, uansett hvordan vi skriver problemet Hva skjer hvis vi i midten av våre beregninger ignorerer betydningen av plassere verdi og bare legg til representasjonen for 6 og representasjonen for -6 AS HVIS den mest signifikante biten var akkurat som alle de andre. Tillegget fløt ut i 5. bit, men de nedre 4 bitene gir oss 0 Det vi har vist er at subtraksjon i de to komplement-systemene kan gjøres ved hjelp av tillegg. I design av digital elektronikk er dette en stor forenkling. La oss prøve 6-5plement og øke 5 -5 1011.Gjenvinning hadde vi et overløp til femte bit, men vi fikk riktig svar 6 - 5 1 Hva skjer hvis vi tar 5 - 6plement og øke 6 -6 1010. Vi får -1 og det er ingen overløp til femte bit. Vi ser dermed at den femte delen eller generelt biten til venstre for den viktigste biten i tallene som vi rekker med arbeider 1 hvis minuend er større enn subtrahend, og det er 0 hvis subtrahend er større enn minuend Dette er mer informasjon som er rik enn signaturstørrelse binært, og tar mindre forvirrende å gjøre subtraksjon Det er derfor, inne i datamaskiner, to s komplementrepresentasjon er nesten universell. Øvelse For et 8-bits binært ord skriv ned -3 i to s komplement binære Trykk for å se -3 som binært Du kan begynne med å skrive ned 3, deretter komplementere og øke Trykk for å se 3 som binær. Øvelse Beregn 3-5 og 5-3 svarer åpenbart 2 i to s komplement binære Klikk for å se begge svarene. Nå har du funnet ut at 111111 er -1, 111110 er -2 osv. Hvis vi har en 4-biters tall , 1001 er komplement 0110 trinn 0111 -7 Men hva er 1000 Ved konvensjon, er s -8, IKKE 8 Hvorfor A led 1 er tatt som negativ som i Sign Plus Magnitude Binær Så hvis vi har N bits i binær representasjon, kan vi uttrykke tall fra -2 N-1 til 2 N-1 - 1 For N 4, er s -8 til 7. I et nøtteskall To s komplement binær tillater representasjon av både positive og negative heltall, muliggjør enkel skiltendring, og tillater subtraksjon eller tilføyelse av tall med tegn lettere enn å signere pluss størrelseskoding. En annen kodingsordning brukes av og til. Anta at faktiske tall base 10 ekvivalent kjøre fra -128 til 127 Hvis vi bare lagde 128 til hvert tall, blir rekkevidden 0 til 255, det samme som rett binært Dette kalles offset binære Koden for -128 er 0000 0000, kodingen for 0 er 1000 0000 og kodingen for 127 er 1111 1111 Hvis man er klar over på forhånd at denne kodingen er brukt, er det vanlig å trekke 2 N-1 fra hvert nummer som det er lest inn i en datamaskin slik at den kan lagres som et signert heltall, enten sign-magnitude eller two's complement Vi håndterer dette c overvinning ikke lenger her, men man vil av og til se en datakonverter som bruker denne konvensjonen. Det er vanligvis en omformer som bruker en av de andre konvensjonene, og er mer vanlig.

Comments