Pridajte binárne čísla. Priame, voliteľné a reverzné kódy

Používateľ Eugene nás požiadal o vykonanie prevodu z priamych na dodatočné alebo reverzné kódy.

Nasleduje kalkulačka, ktorá prekladá zadané kladné alebo záporné celé číslo binárny kóda tiež zobrazí opačný kód tohto čísla a jeho čísla doplnkový kód, Pod kalkulačkou, ako obvykle, trochu teórie.

aktualizovaťOdpoveď: Z komentárov je jasné, že ľudia úplne nerozumejú tomu, čo táto kalkulačka robí. Presnejšie povedané, to, čo som urobil, bol algoritmus na výpočet dodatočného kódu na ľubovoľné číslo. Ľudia chcú, aby im len ukázal ďalšie kódové číslo. No, teraz pri zadávaní kladného čísla, kalkulačka zobrazuje zobrazenie čísla v binárnej forme, pretože neexistuje žiadny inverzný a doplnkový kód a pri zadávaní záporného čísla sa zobrazí ďalší a reverzný kód.

Takže teória

Priamy kód   čísla je reprezentácia nepodpísaného binárneho čísla. Ak hovoríme o strojovej aritmetike, spravidla sa určitému obmedzenému počtu číslic priradí reprezentácia čísla. Rozsah čísel, ktoré môžu byť reprezentované počtom číslic n, sa rovná

Reverzný kód   čísla alebo okrem jedného (komplementu) je to inverzia priamy kód   (preto sa tiež nazýva inverzný kód). To znamená, že všetky nuly sú nahradené týmito hodnotami a nuly nulami.

Ďalší kód   čísla alebo okrem dvoch (dva doplnky) je to reverzný kód, ktorého najmenší významný bit je jeden.

A teraz "prečo, prečo je to všetko?" ©

A to je všetko pre pohodlnú prácu s príznakmi. Keďže chcem všetko pochopiť pomocou príkladov, budem tiež s príkladmi povedať. Predpokladajme, že máme 4 číslice pre prácu s binárnymi číslami. Týmto spôsobom môžete reprezentovať 16 čísel - 0, 1, ... 15
00 - 0000
...
15 - 1111

Ale ak nie je žiadne znamenie, získa sa slabá aritmetika. Potrebujete zadať znamienko. Aby nedošlo k urážaniu nikoho, dávame polovicu rozsahu kladných čísel (8 čísel), pol na záporné čísla (aj 8 čísel). Nula, ktorá odlišuje strojovú aritmetiku od bežnej, priraďujeme k kladným číslam (v bežnej aritmetike nula nemá žiadny znak, ak sa nemýlim). Takže 0, ..., 7 spadajú do kladných čísel a -1, ..., -8 spadajú do záporných čísel.

Rozlíšenie medzi kladnými a zápornými číslami zvýrazní najvýznamnejší bit čísla medzník (sign bit)
  0 v tejto číslici hovorí, že ide o pozitívne číslo a číslo 1 je záporné.

S pozitívnymi číslami sa všetko zdá byť jasné, môžete použiť priamy kód, ktorý ich reprezentujete.
0 - 0000
1 - 0001
7 - 0111

Ako si predstaviť záporné čísla?

Na ich prezentáciu sa používa doplnkový kód.
  To znamená, že -7 v dodatočnom kóde sa získava ako
  priamy kód 7 = 0111
  reverzný kód 7 = 1000
  doplnkový kód 7 = 1001

Všimnite si, že priamy kód 1001 predstavuje číslo 9, čo je presne 16 stupňov od čísla -7, alebo.
  Alebo, čo je rovnaké, dodatočný kód čísla "dopĺňa" priamy kód až do, t. 7 + 9 = 16

A ukázalo sa, že je veľmi výhodné pre strojové výpočty - s takýmto vyobrazením záporného čísla operácie pridania a odčítania je možné realizovať jednu schému dodatočných údajov, zatiaľ čo je veľmi jednoduché určiť pretečenie výsledku (ak nie je dostatočná kapacita čísel reprezentovať výsledné číslo)

Niekoľko príkladov
7-3=4
  0111 priamy kód 7
  1101 doplnkový kód 3
  0100 výsledok pridania 4

1+7=6
  1111 doplnkový kód 1
  0111 priamy kód 7
  0110 výsledok pridania 6

Čo sa týka pretečenia - určuje to posledné dva prenosy vrátane prevodu na vyššiu úroveň. Navyše, ak sú prevody 11 alebo 00, potom nedošlo k pretečeniu a ak bolo 01 alebo 10, potom to bolo. Súčasne, ak nedošlo k pretečeniu, výstup pre výboje sa môže ignorovať.

Príklady, kde sú zobrazené pomlčky a piate triedy.

00111 priamy kód 7
  00001 priamy kód 1
  01110 prenosov
  01000 výsledok 8 - pretečenie

Posledné dva prepravky 01 - pretečenie

7+7=0
  00111 priamy kód 7
  01001 doplnkový kód 7
  11110 prevodov
  10 000 je 16 - ale piata číslica sa môže ignorovať, skutočný výsledok je 0

Posledné dva prevody 11, ktoré sa prenášajú do piatej číslice, môžu byť zlikvidované, zvyšný výsledok, nula, je aritmeticky správna.
  Opäť môžete skontrolovať pretečenie pomocou najjednoduchšej operácie XOR dvoch bitových spojovníkov.

Vďaka takým výhodným vlastnostiam je najbežnejší spôsob predstavovania záporných čísel v aritmetike počítača ďalší kód.

PS: Dobre, opačný kód dopĺňa číslo na všetko alebo na všetko 1, a preto sa nazýva pridaním k 1. Môžu tiež reprezentovať záporné čísla a realizovať odpočítanie a doplnenie schémou pridania, len to je prílis prísnejší - s cyklickým prenosom a viete si predstaviť jedno číslo, pretože všetky jednotky sú už obsadené - to je opačný kód nuly, druh "mínus nula", to znamená, že rozsah je získaný, ak si vzal náš príklad od -7 do 7. Nie tak pohodlné, v jednom slove.

Pri úvahách o elementárnych aritmetických operáciách na binárnych číslach sme sa už dotkli témy negatívnych binárne čísla, Teraz ju vezmite viac.

Na kódovanie znaku binárneho čísla sa používa senior (" medzník") (nula zodpovedá plusu, jednotka - mínus).

Táto forma reprezentácie čísla sa nazýva priamy kód.

V počítači je priamy kód aplikovaný iba na reprezentovanie pozitívnych binárnych čísel. Pre reprezentáciu záporných čísel sa používa dodatočný alebo reverzný kód, pretože je nepohodlné vykonávať aritmetické operácie na záporných číslach v priamom kóde.

Pravidlá tvorby dodatočného a návratového kódu sú nasledovné:

    na vytvorenie dodatočného kódu záporného čísla je potrebné umiestniť jednotku na významnú číslicu, invertovať všetky digitálne číslice (nahradiť 1 0 a 0 s 1), potom pridať 1 k mladšej číslice;

    pre vytvorenie reverzného kódu záporného čísla je potrebné vložiť jeden do významnej číslice a obrátiť všetky digitálne číslice;

    pri týchto transformáciách sa musí brať do úvahy veľkosť vybíjacej mriežky.

Priamy kód je možné získať z doplnkových a inverzných rovnakých pravidiel, ktoré slúžia na vyhľadanie dodatočných a inverzných kódov.

Tabuľka 2.1 zobrazuje desatinné čísla a ich binárne reprezentácie v troch rôznych formách. Zaujímavé je, že to je to, čo. Ak začnete odpočítavať s číslom 1000 (-8) a pohybujete sa nadol v stĺpcoch, potom v dodatočnom kóde sa každým po sebe nasledujúcim číslom získate pridaním jedného do predchádzajúceho bez toho, aby ste prihliadli na prevod nad rámec štvrtého poradia. Takže táto operácia sa nevykonáva v kóde dopredu a dozadu. Táto funkcia doplnkového kódu bola dôvodom preferenčného použitia v moderných mikro a mini počítačoch.

Takže čísla uvedené v doplnkovom kóde sa pridávajú podľa pravidiel binárneho pridávania, ale bez zohľadnenia akýchkoľvek presunov pre limity najvyššieho poradia. Zvážte to v príkladoch 2.1.

Tabuľka 2.1 Priame, inverzné a voliteľné kódy

desatinný

spiatočný

dodatočný

Príklad 2.1 Binárne pridanie do ďalšieho kódu

Ďalšou výhodou dodatočného kódu je, že nula, na rozdiel od kódov dopredu a dozadu, je reprezentovaná jedným kódom. Prítomnosť 0 v bitke signálu, keď reprezentuje nulu, ju definuje ako pozitívnu hodnotu, čo je v súlade s teóriou matematických čísel a konvenciami prijatými vo všetkých programovacích jazykoch.

Z vyššie uvedených príkladov vyplýva, že pozitívne čísla v dopredných, reverzných a ďalších kóde sú rovnaké. Priamy a inverzný kód má nula dve reprezentácie - "pozitívnu" a "negatívnu" nulu.

Všimnite si, že v reprezentácii s pohyblivou čiarou je mantisa a poradie čísla samostatne zakódované. Súčasne je možné reprezentovať mantis a poradie čísel v rovnakom alebo odlišnom kóde. Napríklad poradie čísla môže byť reprezentované priamo, a mantisa - v ďalších kópiách atď.

Pomocou inverzných a komplementárnych kódov sa teda môže algebraická adícia zredukovať na aritmetické pridanie číselných kódov, ktoré sa vzťahujú aj na číslice znakov, ktoré sa považujú za číslice celočíselnej časti čísla.

Pri pridávaní čísiel menších ako jedna sa získajú čísla v stroji, v absolútnej hodnote veľké jednotky. Ak chcete zistiť pretekanie mriežky v počítači, upravených dopredných, inverzných a dodatočných kódov, V týchto kódoch je znak zakódovaný do dvoch číslic a znamienko plus zodpovedá kombinácii 00 a znak mínus zodpovedá kombinácii 11.

Pravidlá pridávania pre modifikované kódy sú rovnaké ako normálne. Jednotka prenosu z najvýznamnejšej číslice v upravenom dodatočnom kóde sa vyradí a v modifikovanom reverznom kóde sa prenesie na číslicu s nízkym poradím.

Znakom pretečenia je vzhľad pri výraznom vypúšťaní súčtu kombinácie 01 pri pridávaní kladných čísel ( pretekať) alebo 10 pri pridávaní záporných čísel ( podtečení). Najvýznamnejšia číslica v týchto prípadoch obsahuje skutočnú hodnotu sumového znamienka a najmenej významná je najvýznamnejšia číslica čísla. Na opravu pretečenia sa číslo musí posunúť napravo v bitovej mriežke o jednu číslicu vpravo a číslica sa rovná novej hodnote najmenej významnej číslice bude umiestnená v uvoľnenom hlavnom znamienku bit. Po nastavení pretečenia mantisy výsledku sa poradie výsledku musí zvýšiť o jeden.

Používateľ Eugene nás požiadal o vykonanie prevodu z priamych na dodatočné alebo reverzné kódy.

Nasleduje kalkulačka, ktorá prekladá zadané kladné alebo záporné celé číslo do binárneho kódu a zároveň vykáže opačný kód tohto čísla a jeho doplnkového kódu. Pod kalkulačkou, ako obvykle, trochu teórie.

aktualizovaťOdpoveď: Z komentárov je jasné, že ľudia úplne nerozumejú tomu, čo táto kalkulačka robí. Presnejšie povedané, to, čo som urobil, bol algoritmus na výpočet dodatočného kódu na ľubovoľné číslo. Ľudia chcú, aby im len ukázal ďalšie kódové číslo. No, teraz pri zadávaní kladného čísla, kalkulačka zobrazuje zobrazenie čísla v binárnej forme, pretože neexistuje žiadny inverzný a doplnkový kód a pri zadávaní záporného čísla sa zobrazí ďalší a reverzný kód.

Takže teória

Priamy kód   čísla je reprezentácia nepodpísaného binárneho čísla. Ak hovoríme o strojovej aritmetike, spravidla sa určitému obmedzenému počtu číslic priradí reprezentácia čísla. Rozsah čísel, ktoré môžu byť reprezentované počtom číslic n, sa rovná

Reverzný kód   čísla alebo okrem jedného (komplementu) je to inverzia priameho kódu (preto sa tiež nazýva inverzný kód). To znamená, že všetky nuly sú nahradené týmito hodnotami a nuly nulami.

Ďalší kód   čísla alebo okrem dvoch (dva doplnky) je to reverzný kód, ktorého najmenší významný bit je jeden.

A teraz "prečo, prečo je to všetko?" ©

A to je všetko pre pohodlnú prácu s príznakmi. Keďže chcem všetko pochopiť pomocou príkladov, budem tiež s príkladmi povedať. Predpokladajme, že máme 4 číslice pre prácu s binárnymi číslami. Týmto spôsobom môžete reprezentovať 16 čísel - 0, 1, ... 15
00 - 0000
...
15 - 1111

Ale ak nie je žiadne znamenie, získa sa slabá aritmetika. Potrebujete zadať znamienko. Aby nedošlo k urážaniu nikoho, dávame polovicu rozsahu kladných čísel (8 čísel), pol na záporné čísla (aj 8 čísel). Nula, ktorá odlišuje strojovú aritmetiku od bežnej, priraďujeme k kladným číslam (v bežnej aritmetike nula nemá žiadny znak, ak sa nemýlim). Takže 0, ..., 7 spadajú do kladných čísel a -1, ..., -8 spadajú do záporných čísel.

Rozlíšenie medzi kladnými a zápornými číslami zvýrazní najvýznamnejší bit čísla medzník (sign bit)
  0 v tejto číslici hovorí, že ide o pozitívne číslo a číslo 1 je záporné.

S pozitívnymi číslami sa všetko zdá byť jasné, môžete použiť priamy kód, ktorý ich reprezentujete.
0 - 0000
1 - 0001
7 - 0111

A ako prezentovať záporné čísla?

Na ich prezentáciu sa používa doplnkový kód.
  To znamená, že -7 v dodatočnom kóde sa získava ako
  priamy kód 7 = 0111
  reverzný kód 7 = 1000
  doplnkový kód 7 = 1001

Všimnite si, že priamy kód 1001 predstavuje číslo 9, čo je presne 16 stupňov od čísla -7, alebo.
  Alebo, čo je rovnaké, dodatočný kód čísla "dopĺňa" priamy kód až do, t. 7 + 9 = 16

A ukázalo sa, že je veľmi výhodné pre strojové výpočty - s takýmto vyobrazením záporného čísla operácie pridania a odčítania je možné realizovať jednu schému dodatočných údajov, zatiaľ čo je veľmi jednoduché určiť pretečenie výsledku (ak nie je dostatočná kapacita čísel reprezentovať výsledné číslo)

Niekoľko príkladov
7-3=4
  0111 priamy kód 7
  1101 doplnkový kód 3
  0100 výsledok pridania 4

1+7=6
  1111 doplnkový kód 1
  0111 priamy kód 7
  0110 výsledok pridania 6

Čo sa týka pretečenia - určuje to posledné dva prenosy vrátane prevodu na vyššiu úroveň. Navyše, ak sú prevody 11 alebo 00, potom nedošlo k pretečeniu a ak bolo 01 alebo 10, potom to bolo. Súčasne, ak nedošlo k pretečeniu, výstup pre výboje sa môže ignorovať.

Príklady, kde sú zobrazené pomlčky a piate triedy.

00111 priamy kód 7
  00001 priamy kód 1
  01110 prenosov
  01000 výsledok 8 - pretečenie

Posledné dva prepravky 01 - pretečenie

7+7=0
  00111 priamy kód 7
  01001 doplnkový kód 7
  11110 prevodov
  10 000 je 16 - ale piata číslica sa môže ignorovať, skutočný výsledok je 0

Posledné dva prevody 11, ktoré sa prenášajú do piatej číslice, môžu byť zlikvidované, zvyšný výsledok, nula, je aritmeticky správna.
  Opäť môžete skontrolovať pretečenie pomocou najjednoduchšej operácie XOR dvoch bitových spojovníkov.

Vďaka takým výhodným vlastnostiam je najbežnejší spôsob predstavovania záporných čísel v aritmetike počítača ďalší kód.

PS: Dobre, opačný kód dopĺňa číslo na všetko alebo na všetko 1, a preto sa nazýva pridaním k 1. Môžu tiež reprezentovať záporné čísla a realizovať odpočítanie a doplnenie schémou pridania, len to je prílis prísnejší - s cyklickým prenosom a viete si predstaviť jedno číslo, pretože všetky jednotky sú už obsadené - to je opačný kód nuly, druh "mínus nula", to znamená, že rozsah je získaný, ak si vzal náš príklad od -7 do 7. Nie tak pohodlné, v jednom slove.

Náhodné články

hore