3. peatükk: Kahendarvu toimingud mikroprotsessoris

3 Peatukk Kahendarvu Toimingud Mikroprotsessoris



3. peatükk: Kahendarvu toimingud mikroprotsessoris

3.1 Sissejuhatus

Arvutis tehakse aritmeetilisi tehteid 8 bitis, 16 bitis, 32 bitis või 64 bitis. Arv nagu 3 kahendkoodis on 11. Kui toiming tuleb teha 8 bitis, loetakse selleks 00000011; enne seda 0 nulliga.







Kahendarvu (nt 10000101) puhul on kõige olulisem bitt vasakpoolses servas. Sel juhul on see 1. Kõige vähem oluline bitt on parempoolne äärmine bitt, mis on numbri jaoks endiselt 1. Kõige olulisem bitt on lühendatud kui MSB. Kõige vähem oluline bitt on lühendatud kui LSB.



Binaarne digiT on lühendatud kui BIT ja see kirjutatakse lihtsalt bitina. Numbris 10010011 on iga üks või null natuke. Neljast bitist koosnevat rühma nimetatakse nibble'iks. Kaheksast bitist koosnevat rühma nimetatakse baidiks. Bait koosneb kahest näksist. Madalam näks on LSB näksimine ja kõrgem nibble MSB jaoks.



8 bitist, 16 bitist, 32 bitist või 64 bitist koosnevat rühma nimetatakse sõnaks seni, kuni see rühm edastab teavet peale numbri näitamise. Rühma nimetatakse näiteks sõnaks, kui see on arvutis madala tasemega käsk. Samuti on olemas 24-bitine sõna, kuid seda tänapäeval tavaliselt ei kasutata.





Endiaalsus viitab järjekorrale, milles baidid moodustavad sõna. Mõelge 24-bitisele sõnale – 100100001111010100100010. See sõna koosneb kolmest baidist, mis on:

10010000 11110101 00100010



Kõige olulisem bait on kõige vasakpoolsem bait. Kui äärmises vasakpoolses servas olev bait on kõige olulisem bait ja parempoolne bait on kõige vähem oluline bait, nimetatakse seda sõna Big Endi esinduseks. Väike-Endia esitus on vastupidine.

Arvutimälu on lahtrite jada ja igas lahtris on bait. Arvuti mälu esimene lahter on baidi 0 jaoks, teine ​​​​baidi 1 jaoks, kolmas baidi 2 jaoks ja nii edasi. Suure lõpuga ja eelmise sõna puhul salvestatakse kõige olulisem bait 0. baidi lahtrisse, keskmine bait 1. baidi lahtrisse ja kõige vähem oluline bait 2. baidi lahtrisse. See tähendab, et alumises mälulahtris on rohkem olulisi baite.

Eelmise 24-bitise sõna saab kirjutada baitide vastupidises järjekorras järgmiselt:

00100010 11110101 10010000

Nüüd on kõige vähem oluline bait äärmises vasakus servas ja kõige olulisem bait äärmises parempoolses servas. Kui äärmises vasakpoolses servas olev bait on kõige vähem tähendusega bait ja äärmises parempoolses bait on kõige olulisem bait, on see sõna Little Endiani esitus. Vähese lõpuga ja eelmise sõna puhul salvestatakse kõige vähem oluline bait 0. baidi lahtrisse, keskmine bait 1. baidi lahtrisse ja kõige olulisem bait 2. baidi lahtrisse. See tähendab, et alumises mälulahtris on vähem olulist baiti.

Endiaalsust ei kasutata bittide jaoks baidis. Seda ei kasutata ka baidis näksimiseks. Seda kasutatakse ainult baitide järjestamiseks.

Numbriliin
Arv ilma märgita on positiivne arv. Positiivsed numbrid on nullist ülespoole liikuvad numbrid. On ka negatiivseid numbreid. Positiivseid ja negatiivseid numbreid saab esitada arvureal. Järgmine arvurida näitab positiivseid ja negatiivseid täisarve (täisarve) nulli lähedal:

Negatiivsed arvud vähenevad nullist allapoole (vasakule). Paljudes olukordades peetakse nulli positiivseks. Mõnes olukorras peetakse seda siiski negatiivseks. Seetõttu on diagrammil nulli ees, alumises numeratsioonis pluss- ja miinusmärk. Kui arv on positiivne, võib selle märgi ära jätta; see kehtib diagrammi ülemise numeratsiooni puhul. Miinusmärki negatiivse arvu ees ei jäeta kunagi välja.

3.2 Kahendarvude liitmine

Lisaks:

A + B = S

A-d nimetatakse augendiks, B-d liitmiseks ja S-ks summaks.

Kaaluge järgmist kahe positiivse arvu liitmist kahes baasis:

Kahes baasis on ainsad võimalikud numbrid 0 ja 1. 2. aluse liitmine on sarnane kümne aluse liitmisele, kuid kahe aluse kaks on üks-null (10). Kui kahe biti summa veerus on 10, kirjutatakse 0 ja 1 kantakse otse vasakusse veergu; lisada kahe seal oleva biti summale. Kui kogusumma on kolm, tähendab see kahes baasis 11. Parempoolne 1 11-st kirjutatakse ja vasakpoolne 1 kantakse lisamiseks vahetu vasakpoolse veeru bittide summale. Mõlemal juhul nimetatakse 1 vasakule kantud kandmiseks.

Lugedes eelmist liitmistabelit paremalt, on teises veerus (paremalt) kanne, mis tuleneb 1+1 = 10. Kolmandas veerus on kandmine, mis tuleneb 1+1+ kandmisest 1 = 11. Neljandas veerus on ülekandmine, mis tuleneb 0+1+ ülekandest 1 = 10. Viiendas veerus ei ole edasikandmist, kuna summeeritakse 0+0+ 1 = 1 edasikandmist. ülejäänud veerud ei hõlma kandmist.

Veergude loendamine algab paremast otsast. 16-bitise lisamise korral võib toimuda ülekanne kaheksandast veerust üheksandasse veergu (liigub vasakule). Seda illustreerib järgmine tabel:

Aritmeetilised ja loogikatoimingud toimuvad arvuti emaplaadil asuvas mikroprotsessoris.

8-bitise sõnaarvuti puhul ei saa edastus riistvara poolt automaatselt kaheksandalt bitilt üheksanda bitti minna. Nii et kahe 16-bitise grupi lisamiseks sellises arvutis tuleb liitmine teha kaks korda kaheksa-kaheksa bitipaari kaupa. Kandmist liigutab ja teostab tarkvara (programmeerimine).

Kahe arvu lisamiseks saab need enne lisamist teisendada nende kahe komplementvormiks (vt allpool).

3.3 Kahe komplement ja selle kahendarvude lahutamine

Arvuti emaplaadil on mälu ja mikroprotsessor ja muud vooluringid. Mälu on kaheksabitiste rakkude jada. Baiti puhul läheb iga bitt lahtrisse. Mikroprotsessoril on mõned mälutüüpi asukohad. Neid mälutüüpi asukohti nimetatakse registriteks. Seega saab arvutis baitide rühmi ajutiselt salvestada mällu või mikroprotsessori registritesse.

Kõigis nendes salvestusruumides võib iga lahter võtta kas 1 või 0 ja mitte midagi muud. Elus on positiivseid ja negatiivseid numbreid. Positiivne arv algab plussmärgiga (+) ja negatiivne arv algab negatiivse märgiga (-). Kui märk jäetakse välja, loetakse arv positiivseks.

Selle arvumärgi märkimise probleemi lahendamiseks arvutis salvestatakse täisarvud vahemikesse. Täisarvud on täisarvud. Kui võimalike arvude vahemiku salvestamiseks kasutatakse kaheksat bitti, kasutatakse märgibitina vasakpoolseimat bitti. Kui arv algab 0-ga, on see arv positiivne. Kui see algab 1-ga, on see arv negatiivne. Kui võimalike arvude vahemiku salvestamiseks kasutatakse kuusteist bitti, kasutatakse märgibitina vasakpoolseimat bitti. Kui arv algab 0-ga, on t arv positiivne. Kui see algab 1-ga, on see arv negatiivne. Sellel kujul olevaid numbreid nimetatakse märgiga numbriteks.

Praktikas saab märgistatud numbreid olla 8 biti, 16 bitti, 32 bitti ja 64 bitti. Mida laiemat bittide arvu kasutatakse, seda suurem on võimalike numbrite vahemik, mida saab salvestada.

Kahe täiendtäisarvud
Kahe täienduse korral on positiivsed arvud tavalised loendusarvud, välja arvatud see, et kõige vasakpoolsem number on 0. Mis tahes positiivse arvu jaoks vastava negatiivse arvu saamiseks pöörake arvu iga bitt ümber ja lisage tulemusele 1. 0 invert või täiend on 1. 1 invert või täiend on 0. Järgmised tabelid näitavad kahe komplemendi arvu nende vahemikes:

Tabel 3.31
Kahe täienduse täisarvud kahes bitis
Binaarne Kümnend
01 +1
00 +0
üksteist -1
10 -2

Positiivsed kahendarvud on 00 ja 01 (see on null ja üks). Kõige vasakpoolsemas bitis näitab null, et need on positiivsed arvud. 00 on mõnevõrra vahemiku keskel. -1 saamiseks leitakse, et arvu 01 invert on 10. Lisades sellele (äärmisel paremal) 1, saadakse 11.

Kuna kasutatakse kahte bitti, jääb ainult üks bitt esindama numbreid vahemikus, mis koosneb numbritest +1, +0 ja -1, mis vastavad numbritele 01, 00 ja 11. Esimene bitt näitab märki. Juhtub, et 10 +2 puhul pole nende kolme kahendarvu hulgas. 10 algab 1-ga, mis tähendab, et see peab olema negatiivne arv kahe täienduses. Seega on vahemikus 10, mis tähendab -2.

Kahe komplemendi kahe biti korral on kõigi täisarvude (positiivsete ja negatiivsete) arv, mida saab esitada, 2 2 = 4 ja mitte 2 2 -1 = 3. Nüanss tuleneb viimase negatiivse arvu kaasamisest, mis on 2 negatiivne number koos – 1. Sel juhul -2 2-1 = -2 1 = -2. Kahe biti kahe komplementarvu vahemikus +2 ei ole.

Tabel 3.32
Kahe täiendavad täisarvud neljas bitis
Binaarne Kümnend
0111 +7
0110 +6
0101 +5
0100 +4
0011 +3
0010 +2
0001 +1
0000 +0
1111 -1
1110 1110
1101 -3
1101 -3
1100 -4
1011 -5
1010 -6
1001 1001
1000 -8

Positiivsed kahendarvud on vahemikus 0000 kuni 0111 (see tähendab nullist seitsmeni). Kõige vasakpoolsemas bitis näitab null, et need on positiivsed arvud. 0000 on mõnevõrra vahemikus. -1 saamiseks leitakse arvu 0001 pöördväärtus 1110. Lisades sellele (äärmisel paremal) 1, saadakse 1111. -2 saamiseks leitakse, et 0010 invert on 1101. Lisades sellele 1 ( äärmiselt paremalt) annab 1110. Teised negatiivsed kahendarvud nagu -3 kuni -7 määratakse sarnaselt.

Kuna kasutatakse nelja bitti, jäetakse kolm bitti esindama numbreid vahemikus +7, +6, +5, +4, +3, +2, +1, +0, -1, -2, - 3, -4, -5, -6 ja -7, mis vastavad numbritele 0111, 0110, 0101, 0100, 0011, 0010, 0001, 0000, 1111, 1110, 1101, 1100, 1011, 1010 ja 1010.

Eraldi tuleb käsitleda -8, mis vastab 1000-le. Kõigi nende arvude esimene bitt tähistab positiivsete arvude märki 0 ja negatiivsete arvude jaoks 1. Juhtub, et 1000 pole nende neljateistkümne kahendarvu hulgas. 1000 algab 1-ga, mis tähendab, et kahe täiendi puhul peab see olema negatiivne arv. Seega on vahemikus 1000, mis tähendab -8.

Nelja bitiga kahe komplemendis on kõigi esitatavate täisarvude (positiivsete ja negatiivsete) arv 2 4 = 16 ja mitte 2 4 – 1 = 15. Nüanss tuleneb viimase negatiivse arvu kaasamisest, mis on 2 negatiivne numberWidth – 1. Sel juhul -2 4 -1 = -2 3 = -8. Numbrite vahemikus +8 pole.

Eelmist analüüsi kahe, nelja ja laiemate bittide kohta kahe komplemendis saab rakendada 8 bitti, 16 bitti, 32 bitti ja 64 bitti laiustele kahendarvudele.

Kahe komplement ohverdab esimese (vasakpoolseima) biti 0 märgi jaoks positiivse arvu ja 1 negatiivse arvu jaoks. n-biti laiuse bittide rühma jaoks on 2 n positiivsed pluss negatiivsed arvud kokku. See oleks 2 n -1, kui see ei oleks õnnelik viimane (väikseim) negatiivne arv. Suurim positiivne arv on +2 n-1 -1 ja väikseim negatiivne arv on -2 n-1 -1. See oleks -2 n-1 -1, kui poleks õnnelik -2 n-1 kaasatud.

Arvude lahutamine kahe komplemendis
Lahutamisel:

A – B = D

A-d nimetatakse minuendiks, B-d alamosadeks ja D-d erinevuseks.

Ühe positiivse kahendarvu lahutamiseks teisest positiivsest kahendarvust kirjutatakse minuend kahe komplemendina ja alamosa teisendatakse selle negatiivse kahe komplemendi väärtuseks. Seega saab matemaatiline väide:

A+ – B = D

Teisisõnu, kahe komplemendi lahutamisel teisendatakse alamosa negatiivseks arvuks ja lisatakse seejärel minuendile.

Näide 3.31:
Hinnake järgmist kümnendavaldist kahe komplemendis, kasutades nelja bitti:

6-4

Lahendus:
Kahendarvuks 6 on 110. 4-bitise kahe komplemendi korral on see 0110. Binaararv +4 korral on 100. 4-bitise kahe komplemendi korral on see 0100. 0100, mis tuleb kahes komplemendis teisendada negatiivseks 4-ks. täiendada järgmiselt: 0100 täiendus või inversioon on 1011. Lisades sellele paremast otsast 1, nagu me tegime lisaks, saadakse 1100. Seega on kümnend avaldis:

6–4, millest saab:

0110-0100, mis on

0110 +(– 0100) = 0110 + 1100 tehakse nagu eelmises lisamise jaotises järgmiselt:

Märkus: 0110 +(– 0100) on sama, mis 6 + – 4

Kahe komplemendi lahutamisel visatakse kõik edasikanded, mis on peale viimast veergu vasakule, minema. Kümnendarvuga lahutamisel on matemaatiline väide:

6-4 = 2

Tehes sama asja kahe komplemendiga, on vastuseks 0010, mis on +2 kahe komplemendi binaarloenduses. Eelmine lahutamine lahutab suuremast arvust väiksema arvu. Järgmises näites lahutatakse suurem arv väiksemast arvust. Tabelist 3.32 saab vaadata, kas 0010 on tõesti kahe täiend, mis võrdub +2-ga.

Näide 3.32:
Hinnake järgmist kümnendavaldist nelja bitiga kahetäiendis:

4-6

Lahendus:
Kahendarv 4 jaoks on 100. 4-bitise kahe komplemendi puhul on see 0100. Binaararv +6 korral on 110. 4-bitise kahe komplemendi korral on see 0110. 0110 tuleb teisendada negatiivseks 6-ks kahe komplemendis järgmiselt: 0110 täiendus või inversioon on 1001. Lisades sellele paremast otsast 1, nagu tegime eelmises liitmises, saadakse 1010. Seega on kümnendlause:

4–6, millest saab:

0100-0110, mis on

0100 +(– 0110) = 0100 + 1010 tehakse nagu eelmises lisamise jaotises järgmiselt:

Märkus: 4+ – 6 on sama, mis 0100 +(– 0110).

Kahe komplemendi lahutamisel visatakse kõik edasikanded, mis on peale viimast veergu vasakule, minema. Kümnendarvuga lahutamisel on matemaatiline väide:

4 – 6 = -2

Tehes sama asja kahe komplemendiga, on vastus 1110, mis on -2 kahe komplemendi binaarloenduses. Tabelist 3.32 saab vaadata, kas 1110 on tõesti kahe täiend, mis on samaväärne väärtusega -2.

3.4 Kahendarvude korrutamine

Avalduses:

A x B = P

A-d nimetatakse kordajaks, B-d kordajaks ja P-d korrutiseks. A x B avaldis tähendab A, B liitmist mitu korda, kui A ja B on täisarvud (täisarvud).

Kahendarvuga korrutamine on sama, mis kümnendarvuga korrutamine. Kuid selle asemel, et teha seda kümnendsüsteemis, tehakse seda kahendsüsteemis. Kümnend avaldise 42 x 10 korrutamine toimub binaarselt järgmiselt, kus 42 10 = 101010 2 ja 10 10 = 1010 2 :

Lisatud 4 numbrit nimetatakse osatoodeteks. Vastus on toode. Osatoodete lisamine toimub samamoodi nagu eelnevalt selgitatud.

Korrutamist võib näha ka järgmiselt: Selles kahe korrutamise aluses, kui bitt (number) kordajas on 1, on selle osakorrutise väikseim bitt korrutise väikseim bitt, mis kirjutatakse ümber otse selle alla; ja korrutise ülejäänud bitte korratakse vasakule. Selles kahe korrutamise aluses, kui bitt (number) kordajas on 0, koosneb selle osakorrutis nullidest, mille all on kõige vähem oluline bitt 0. Kõigi nullide arv on korrutises olevate bittide arv.

3.5 Kahendarvude jagamine

Avalduses:

A ÷ B = Q

A-d nimetatakse dividendiks, B-d jagajaks ja P-d jagatiseks. Jagatisega võib kaasneda jääk. Avaldis A ÷ B tähendab, mitu korda saab B lisada, et saada A või olla sellele lähedal, nii et jääk on 0 või väiksem kui B.

Jagamist saab teha mitmel viisil. Siin näidatud jaotus on taastamise jaotus.

Osakonna taastamine
See on pika jagamise meetod, mida koolides õpitakse. Kui 237 jagatakse 6-ga, on vastus 39 jääk 3. 237 10 2. aluses on 11101101 2 ja 6 10 aluses 2 on 110 2 . 39 10 aluses 2 on 100111 2 ja 3 10 aluses 2 on 11 2 .

Niisiis, 11101101 2 jagatud 110-ga 2 annab 100111 2 ülejäänud 11 2 kahes aluses. Taastamismeetodi puhul on kahendarvud tavalised arvud ja need ei pruugi olla kahe täienduses. Järgmine struktuur jagab 11101101 2 110 järgi 2 anda 100111 2 ülejäänud 11 2 :

Lahutamine toimub tavaliselt, mitte kahe täiendit kasutades. Kuna see on baas kaks, on laenuks kaks, mitte kümme. Osalised dividendid on 10, 101, 1011, 1010 ja 1001. 11 on ülejäänud osa. Kuna jagaja on kolmekohaline, siis jagamine toimub põhiliselt kolmekohalistes rühmades antud dividendist. Jagatis on täisarv (täisarv) ja selle ülesande jaoks on see 100111. Jagatis- ja jääktulemus on ootuspärane.

3.6 Aritmeetilised tehted tarkvara ja riistvaraga

Arvuti emaplaadil on kell. Kella tiksumisi nimetatakse impulssideks. Iga taktimpulsi korral võetakse emaplaadi erinevates kohtades vastu üks või mitu otsust; ja see on seotud programmeerimisega (tarkvaraga).

Mikroprotsessori sees on kahte tüüpi ahelaid, mida nimetatakse kombineeritud loogikaahelateks ja järjestikusteks loogikaahelateks. On veel üks vooluahel, mida nimetatakse multiplekseriks. Liitmine, korrutamine ja jagamine võib toimuda ühe taktiintervalli jooksul, kasutades kombineeritud loogikat (ahelat). Programmeerimisel (tarkvara) teeb otsuse igal taktimpulsil, kasutades järjestikuseid loogikalülitusi ja multipleksereid.

Kui lahutamine toimub kahe komplemendi abil, on vaja vähemalt kahte taktimpulssi. Esimesel taktimpulsil kanaliseerib multiplekser alamlahendi NOT-väravate hulka (üks EI-värav numbri kohta). Teise taktimpulsi korral lisab kombinatsioonloogika EI-värava väljundile 1 ja jätkab saadud alam- ja minuendi lisamist. Kõik see lisamine võib toimuda ühe kellaintervalli jooksul.

Liitmine, korrutamine ja jagamine võib tõetabeleid kasutades programmeerimisega siiski allapoole jääda. Kuid see veebipõhine karjäärikursus seda ei käsitle.

3.7 Loogikatoimingud mikroprotsessoris

JA, VÕI, XOR ja ümberpööramine

JA
Järgmine tabel illustreerib bitiviisilist JA. See tähendab, et kahe erineva kahendarvu korral määratakse vastavad bitid JA-tabeli AND-tõe põhjal AND:

Vasakult paremale liikudes 1 JA 1 = 1; 0 JA 1 = 0; 0 JA 0 = 0; 1 JA 0 = 0; ja nii edasi vastavalt JA tõetabelile.

VÕI
Järgmine tabel illustreerib bitiviisilist VÕI. See tähendab, et kahe erineva kahendarvu puhul on vastavad bitid VÕI-d vastavalt VÕI-tõe tabelile:

Vasakult paremale liikudes 1 VÕI 1 = 1; 0 VÕI 1 = 1; 0 VÕI 0 = 0; 1 VÕI 0 = 1; ja nii edasi vastavalt VÕI tõetabelile.

TASUTA
Järgmine tabel illustreerib Bitwise-i eksklusiivset VÕI. See tähendab, et kahe erineva kahendarvu puhul tehakse vastavad bitid XOR-i XOR-tõe tabeli alusel:

Vasakult paremale liikudes 1 XOR 1 = 0; 0 XOR 1 = 1; 0 XOR 0 = 0; 1 XOR 0 = 1; ja nii edasi vastavalt XOR-i tõetabelile.

Inverteerida (EI)
Järgmine tabel illustreerib Bitwise NOT (invert). See tähendab, et ühe kahendarvu puhul pööratakse seekord iga bitt EI tõetabeli alusel:

Vasakult paremale liikudes NOT 1 = 0; EI 0 = 1; EI 0 = 1; EI 1 = 0; ja nii edasi vastavalt MITTE tõetabelile.

Lülitamine paremale või vasakule

Tõstuki paremale
Järgmist kahendarvu nihutatakse 3 biti positsiooni võrra paremale, nullid sisestatakse vasakpoolsetesse vabadesse bitikohtadesse:

Vahetamist saab teha ühe, kahe, kolme, nelja jne kohta.

Nihuta vasakule
Järgmist kahendarvu nihutatakse 3 biti positsiooni võrra vasakule, nullid sisestatakse paremal asuvatesse vabadesse bitikohtadesse:

Vahetamist saab teha ühe, kahe, kolme, nelja jne kohta.

Pööramine paremale või vasakule

Pööramine on sarnane nihutamisega. Seda tehakse üks tükk korraga. Paremale pööramisel ei kuku paremast otsast väljuvad bitid maha nagu nihutamisel; need asendavad ükshaaval vasakul olevad tühjad bitid. Vasakule pööramisel ei kuku vasakust otsast väljuvad bitid maha nagu nihutamisel; need asendavad ükshaaval paremal olevad tühjad bitid.

Pööra paremale
Järgmist kahendarvu pööratakse 3 biti positsiooni võrra paremale:

Pöörlemist saab teha ühe, kahe, kolme, nelja jne kohta.

Rorate vasakule
Järgmist kahendarvu pööratakse 3 biti positsiooni võrra vasakule:

Pöörlemist saab teha ühe, kahe, kolme, nelja jne kohta.

3.8 ASCII märgistik ja selle koodi väärtused

ASCII tähendab 'Ameerika (USA) teabevahetuse standardkoodi'. Kujutage ette 96 klahviga klaviatuuri. See on ideaalne klaviatuur, kus suurtähtede klahvid erinevad väiketähtede klahvidest. Iga teine ​​klahv tähistab inglise (USA) klaviatuuril olevat märki. Märgid ja koodid (märkidele vastavad numbrid) on loetletud järgmises:

Selles tabelis on esimesed 32 tähemärki (kaasa arvatud märk 00-ga 16 = 0 10 kood) on mitteprinditavad märgid. Need on kontrolltegelased. Neid ei näe ekraanil (monitoril), kus kõik on võrdsed. Neil on ainult mõju. Arutame selle üle hiljem.

Ülejäänud märgid on trükimärgid; need on ekraanil näha. Seal on 128 ASCII märki. 2 7 = 128. 1111111 2 = 127 10 . 7 in 2 7 tähendab 7 bitti.

Nüüd 1111111 2 + 1 2 on sama nagu:

Siin, 10 000 000 2 = 128 10 . Neid on 128 10 märgid eelmises ASCII-märkide loendis (tabelis). See hõlmab nullmärki, mille kood kuueteistkümnendsüsteemis on 00, mis võrdub 0-ga kümnes baasis.

Kuna kokku on 128 tähemärki, siis 128 miinus 32 mitteprinditavat märki annab 96 trükimärki. Selles jaotises eeldatakse, et on olemas ideaalne klaviatuur 96 märgiga, mis on prinditavad tähemärgid. Sellel ideaalsel klaviatuuril erinevad ingliskeelsete suurtähtede klahvid väiketähtede klahvidest.

Iga tähemärki klaviatuuril tähistab kaks 7-bitist põhiarvu, mida loendis ei kuvata. Näiteks suurtähte 'N' esindab 2. aluses seitse bitti 1001110. Teisendamiseks 1001110 2 alusesse 16, selle ette 0 ja rühmitage tulemus neljabitistesse alamrühmadesse järgmiselt:

| 0100 | 1110 | 2 = | 4 | E | 16

See on 01001110 2 = 4E 16 . 4E teisendamiseks 16 kümne baasi saamiseks tehke järgmist.

4 x (16) 1 + E x (16) 0 = 4 x 16 + E x 1 = 4 x 16 + 14 x 1 = 64 + 14 = 78 10

Loendis (tabelis) N-st paremal on kuueteistkümnendnumber 4E ja kümnendnumber 78.

Teise näitena tähistab tähemärki '[' 2. aluses seitse bitti 1011011. 1011011 teisendamiseks 2 alusesse 16, selle ette 0 ja rühmitage tulemus neljabitistesse alamrühmadesse järgmiselt:

| 0101 | 1011 | 2 = | 5 | B | 16

See on 01011011 2 = 5B 16 . 5B16 teisendamiseks kümneks baasiks tehke järgmist.

5 x (16) 1 + B x (16) 0 = 5 x 16 + B x 1 = 5 x 16 + 11 x 1 = 80 + 11 = 91 10

Loendis (tabelis) märgist „[“ paremal on kuueteistkümnendnumber 5B ja kümnendnumber 91.

Veel ühe näitena tähistab kümnendarvu '5' märki aluse 2 seitse bitti 0110101 ja mitte 0000101 aluses 2. 0110101 teisendamiseks 2 alusesse 16, selle ette 0 ja rühmitage tulemus neljabitistesse alamrühmadesse järgmiselt:

| 0011 | 0101 | 2 = | 5 | B | 16

See on 00110101 2 = 35 16 . 3516 teisendamiseks baaskümneks tehke järgmist.

3 x (16) 1 + 5 x (16) 0 = 3 x 16 + 5 x 1 = 3 x 16 + 5 x 1 = 48 + 5 = 53 10

Loendis (tabelis) numbrist 5 paremal on kuueteistkümnendnumber 35 ja kümnendnumber 53.

Kuna arvuti töötab baitides, siis ideaalse klaviatuuri klahvi vajutamisel saadetakse mikroprotsessorile (emaplaadile) kaheksa bitti. Ideaalne klaviatuur on välisseade, mis on arvuti süsteemsest (baas)üksusest eraldatud. Sellel on elektrooniline ahel (IC), mis loob seitse bitti ja eelneb sellele nulliga, enne kui saadab selle kaabli kaudu süsteemiüksuse emaplaadile. Emaplaadi sisendpordist (sisendahelast) läheb see mikroprotsessorisse, mis on samuti emaplaadil. Mikroprotsessorist läheb see mällu, mis on samuti paigaldatud emaplaadile.

Seega, kui ideaalsel klaviatuuril vajutada klahvi N, viiakse mikroprotsessorisse kaheksa bitti 01001110. Mikroprotsessorist viiakse need mällu, kus need jäävad baitidena mälukohta. Arvutiprogrammeerija peaks meeles pidama, et 01001110 kaheksa bitti 2 on sama mis 4E 16 mis on sama mis 78 10 .

Kui vajutada ideaalsel klaviatuuril klahvi '[', suunatakse mikroprotsessorisse kaheksa bitti 01011011. Mikroprotsessorist viiakse need mällu, kus need jäävad baitidena mälukohta. Arvutiprogrammeerija peaks meeles pidama, et 01011011 kaheksa bitti 2 on sama mis 5B 16 mis on sama mis 91 10 .

Kui ideaalsel klaviatuuril klahvi 5 vajutada märgina, mitte kümnendarvuna, viiakse mikroprotsessorisse kaheksa bitti 00110101. Mikroprotsessorist viiakse need mällu, kus need jäävad baitidena mälukohta. Arvutiprogrammeerija peaks meeles pidama, et 00110101 kaheksa bitti 2 on sama mis 35 16 mis on sama mis 5310 10 .

Mõnikord töötab programm ja ootab kümnendarvu 5 sisestamist arvutisse. Sellises olukorras, kui ideaalsel klaviatuuril vajutada klahvi '5', viiakse mikroprotsessorisse ikkagi kaheksa-bitine kood 00110101. Kuna vaja on kümnendarvu 5, mitte tähemärki 5, kasutab mälust pärit koodijupp (lühiprogramm) mikroprotsessorit, et teisendada kahe aluse märgi kood 00110101 kahe komplementnumbriks 00000101. 2 enne selle kahekomplemendibaidina mälukohta saatmist. Arvutiprogrammeerija peab meeles pidama, et 00000101 tähendab 5 10 aluses 2 ja see erineb koodinumbritest 00110101 2 , 35 16 ja 53 10 mis tähendab tähemärki '5'. Nende kahe komplementarvu 00000101 mälus kuvamiseks peab teine ​​lühike programm teisendama 00000101 mälust numbriks 00110101. See on 00110101, mis on sama mis 35 16 mis on sama mis 53 10 mis kuvatakse monitoril (või trükitakse printeri poolt paberile).

3.9 Ujukoma numbrivorming

Arv ilma kümnendosata on täisarv. Arv 36 on täisarv. 36,375 ei ole täisarv. See on kümnendnumber koos kümnendosaga. 0,375 kümnendosa on murd, mis on väiksem kui 1.

36.375 tõlgendatakse kümnendkohana järgmiselt:

Nüüd:

Niisiis, 100100 2 = 3610, mis on 36,375 täisarvu osa 10 .

Nüüd:

Niisiis, 0,011 2 = 0,375 10 mis on 36.375 kümnendarvu osa 10 .

∴ 36 375 10 = 100100,011 2

Pane see teisiti:

100100.011 2 = 36 375 10

Arvud on arvutis esitatud 2. aluses, mitte 10. aluses, kusjuures kõik on võrdsed. Kuna mikroprotsessori registri lahter või mälus olev lahter võib võtta ainult 1 või 0, pole kümnendkoha salvestamiseks ruumi. See tekitab probleemi. Eraldusvõimena on IEEE-754 ühe täpsusega 32-bitine ujukomaesitus ja IEEE-754 topelttäpsusega 64-bitine ujukomaesitus.

32-bitine ujukoma numbrivorming
Numbrit 100100.0112 saab väljendada järgmiselt:

100100.011 2 = 1,00100011 2 x 2 +5

Sümboli = paremale poolele viidatakse matemaatikas kui 100100.011 vasaku poole kahe põhilise standardvormina. 2 .

Nüüd 00100011 1,00100011-st 2 sümboli = paremal küljel, ilma eelneva '1'ta. ja ilma aluse 2ta, nimetatakse selgesõnaliseks tähenduseks. Sel juhul viiakse binaarpunkt viis kohta vasakule, et saada “1”. Ärge ajage segamini koma ja kahendkoha vahel. Binaarne koma on 2. alus, koma aga 10. 1. 00100011, millele järgneb sümboli = paremal küljel, ilma aluse 2ta, moodustab tõelise tähenduse. 1,00100011 nimetatakse aga kaudseks tähiseks.

Pärast tähistust paremal on 'x 2 +5 ” väljend. Selle avaldise korral nimetatakse +5 eksponendiks. Plussmärk tähendab, et kahendpunkti tuleb nihutada viis kohta ettepoole, et see oleks normaalses algses asendis ja 2 on nummerdamise alus. Eelmise võrrandi saab kirjutada vastupidiselt järgmiselt:

1,00100011 2 x 2 +5 = 100100,011 2

32-bitise ujukoma esituse korral on see '1.00100011 2 x 2 +5 ', mida kasutatakse, mitte ainult '100100.011 2 ”. Aluse 2 ei registreerita. 32-bitine ujukoma esitus faili „1.00100011 2 x 2 +5 ” number, mis võrdub 36,375-ga 10 = 100100,011 2 , on näidatud järgmises tabelis:

Seal on 32-bitised positsioonid, mis on nummerdatud paremast otsast, alustades 0-st. Esimene bitt vasakpoolses otsas on märgibitt. Kui arv on positiivne, on see bitt 0. Kui arv on negatiivne, on see bit 1 (-1 koosneb kahest märgist ja seda ei saa panna ühte lahtrisse). 1.00100011 2 x 2 +5 mis võrdub 36,375-ga 10 mis on samuti võrdne 100100.011 2 on positiivne arv. Niisiis, esimene bitt on 0.

Eksponendi jaoks on kaheksa bitipositsiooni, alates positsioonist 30 kuni positsioonini 23 (kaasa arvatud). Sinna kirjutatud eksponent on aga 10000100 2 mis võrdub 132-ga 10 . Huvipakkuva arvu eksponent on tegelikult +5 kahe baasist. Mis siis saab?

Nüüd kirjutatakse 32-bitises vormingus 0 eksponendiks 01111111 2 mis võrdub 127-ga 10 . +5 10 on +101 2 . Nii et 10000100 saabudes 2 tabeli eksponendiosas 101 2 lisati numbrile 01111111 2 , vastavalt. See tähendab, et 127-le lisati 5, et saada 132 10 .

Tähistaja, ilma “1.”, langes positsioonidelt 22 kuni 15, kaasa arvatud. Pange tähele, et 1-st 1. ei ole 32-bitises stringis märgitud. Seda ei näidata kunagi – nõustu sellega. Ülejäänud lahtrid kuni positsioonini 0 on täidetud nullidega.

Kui tegelik eksponent on -5, lahutatakse 127-st 5 10 saada 122 10 . See vastab 101 lahutamisele 2 alates 01111111 2 saada 01111010 2 .

Kogu eelmise illustratsiooni korral on arv +1, mis võrdub 1,0 x 2 0 = 1,0 x 1 = 1,0 on esitatud järgmiselt:

Pange tähele, et '1.' 1,0 x 2 0 pole vormingus märgitud. Seda pole kunagi näidatud. Järgmine segafraktsioon, mis läheb positiivseks pärast 1,0, on:

Pange tähele 1 paremas otsas. See esitus on number:

Erinevus 1,0000001192092896 ja 1,0 vahel on:

1,0000001192092896 – 1,0 = 0,0000001192092896

Kümnendosadega arvud on segamurrud. Mitte kõik murrud vahemikus 1 10 ja 2 10 saab esitada arvutis. Võib eeldada, et 32-bitise ujukomavorminguga järjestikuste segaarvude väikseim murdarvude vahe on 0,0000001192092896. Oodake, et topelttäpsuse intervall on väiksem. Vaadake järgmist illustratsiooni.

Arvu tähistav 0.0 ei järgi eelmisi argumente. 0.0 esitus on deklareeritud ja seda tuleb sellisena õppida. 0,0 tähistamiseks on kõik olulisuse lahtrid 0 ja kõik eksponendi lahtrid on samuti nullid. Märgibitt võib olla 0 või 1. Kahjuks annab see positiivse 0 ja negatiivse 0 järgmiselt:

Päriselus on ainult üks null. Positiivset 0 ja negatiivset 0 ei eksisteeri. 0 loetakse aga tavaliselt positiivseks. Selle konkreetse vormingu kirjelduse tõttu on siin olemas positiivne 0 ja negatiivne 0. Arvureal (vt eespool) võib olla ka +0 ja -0, kuid eksisteerib ainult üks null.

64-bitine ujukoma numbrivorming
64-bitine ujukomavorming sarnaneb 32-bitise vorminguga, kuid sellel on järgmised erinevused.

  • Numbri esitamiseks on 64 bitti.
  • Märgibiti järel on eksponendinumbri jaoks 11 bitti.
  • Nullindeksi eksponendiarv (2 0 ) on 1023 10 = 01111111111 2 .
  • Üheteistkümnele bitile järgneb 52 bitti selgesõnalise tähenduse jaoks.
  • Sellel on laiem numbrivahemik kui 32-bitisel vormingul.

Pange tähele, et '1.' see on tähenduse alguses ja ei kuulu ikka veel 64 biti hulka, nagu ka 32-bitise vormingu 32 biti hulka.

Üks olulisemaid erinevusi 64-bitise vormingu ja 32-bitise vormingu vahel on see, et 64-bitise vormingu järjestikuste segamurdude erinevus on väiksem kui 32-bitise vormingu puhul.

64-bitise vormingu puhul saab intervalli (vahe) 1,0 ja järgmise segamurru vahel arvutada järgmiselt.

1.0 on

0 01111111111 000000000000000000000 00000000000 0000000000000000000000 2

See on samaväärne arvuga „1.”, mida stringis pole näidatud, korrutatuna 2-ga, mis on tõstetud astmeni (indeks) 0 (eksponent on 1023 10 = 01111111111 2 2 jaoks 0 = 1). String on 1,0 x 2 0 .

Järgmine segafraktsioon, mis on suurem kui 1,0, on:

0 01111111111 000000000000000000000 00000000000 0000000000000000000001 2

See on samaväärne '1'. mida stringis ei näidata, millele järgneb 51 nulli ja seejärel 1, korrutatuna 2-ga, tõstetakse astmeni 0 (eksponent on 1023 10 = 011111111112 2 2 jaoks 0 = 1). See on sama:

+2 0 × (1 + 2− -52 ) ≈ 1,0000000000000002

≈ tähendab ligikaudu võrdset.

Nüüd:

1,0000000000000002 – 1,0 ≈ 0,00000000000000002

32-bitise vormingu vastav intervalli väärtus on 0,0000001192092896 ≈ 0,00000012.

0,0000000000000002 on palju väiksem kui 0,00000012. Seega on 64-bitises vormingus kahe järjestikuse täisarvu (nt 3 ja 4) vahel palju rohkem segatud murde kui 32-bitise vormingu puhul kahe järjestikuse täisarvu vahel.

Segamurdude arv kahe järjestikuse täisarvu vahel arvureal on lõpmatu. Seega ei saa ükski vorming (nt 32-bitine või 64-bitine) pakkuda kõiki kahe järjestikuse täisarvu (täisarvu) segatud murde. Mida väiksem on vahe (intervall) kahe järjestikuse täisarvu vahel, mille vorming (nt 32-bitine või 64-bitine) annab, seda suurem on segamurdude arv järjestikuste täisarvude vahel (arvurea jaoks).

Põhjused, miks 64-bitist vormingut kirjeldatakse 32-bitise vorminguga võrreldes topelt- või suurema täpsusega, on see, et intervall kahe järjestikuse segamurru vahel, mis on piiratud kahe järjestikuse täisarvuga, on 64-bitise vormingu puhul väiksem kui vastav 32. -bitivormingu intervall. Samuti on 64-bitise vormingu puhul kahe piiratud täisarvu vahel rohkem võimalikke segamurde kui 32-bitise vormingu puhul.

Kümnendarvu kümnendosa (murru) teisendamine kahendosaks
36,375 on kümnendnumber, mille kümnendosa on 0,375. „0.375” kümnendosa on nulli ja ühe vahele jääv murdosa. 0,5 kümnes baasis on sama väärtusega kui 1/2 kahes baasis. 0,5 10 mida väljendatakse kahe aluse laiendusega, on:

See ei ole 0,101 2 mis tähendab 0,625 10 . Kümnendarvu kümnendosal on vastava kahendarvu jaoks samaväärne kahendosa. Niisiis, kümnendarvu, näiteks 36,375, teisendamiseks 10 kahe baasiks teisendage 36 binaarseks ja seejärel teisendage 0,375 ka binaarseks. Seejärel ühendage mõlemad tulemused kahendpunktiga. Nende kahe jaotise teisendamise meetodid on erinevad. Kümnendtäisarvu teisendamist aluseks 2 selgitatakse 1. peatükis.

Kümnendmurru teisendamiseks kahendmurruks toimige järgmiselt.

  • Korrutage kümnendmurd (kümnendosa) 2-ga. Sellest tulenev täisarv on esimene kahendnumber.
  • Järgmise kahendnumbri saamiseks korrake eelmist sammu murdarvulise kümnendkoha tulemusega.
  • Korrake eelmist sammu, kuni kümnendmurru tulemus on 0,0000—.

Näide: teisendage 36,375 murdosa 10 samaväärsele murdosale teises aluses.

Lahendus:

Pange tähele, et kolmandas etapis korrutati 0,500 2-ga, mitte 1,500-ga. Vastav binaarne murd loetakse ülevalt viimasest veerust. Ja nii on järgmine tulemus:

.375 10 = 0,011 2

Kahendarvu binaarosa (murru) teisendamine kümnendosaks
Selle saavutamiseks laiendage kahendmurdu 2 vastastikustes astmetes.

Näide: teisendage 100100.011 murdosa 2 samaväärsele murdosale kümnes aluses.

Lahendus:

3.10 Numbri eesliited andmetöötluses

Tavaelus tähendab 1 kilo 1000, mis on lühendatud k (väiketäheline) nagu 1kg. Arvutustehnikas tähendab 1 kilo 2 10 = 1024, kuid seda lühendatakse K-ga (suurtähed), nagu ka 1Kbits. Tavaelus tähendab 1 mega 1 000 000, mis on lühendatud M (suurtähega) nagu 1Mg. Arvutustehnikas tähendab 1 mega 2 kakskümmend = 1 048 576 = 2 10 x 2 10 = 1024 x 1024 = 1 048 576 ja seda lühendatakse endiselt M-ga (suurtähed) nagu 1Mbits. Tavaelus tähendab 1 giga 1 000 000 000 lühendatult G (suurtähega) nagu 1 Gg. Arvutustehnikas tähendab 1 giga 2 30 = 1 073 741 824 = 2 10 x 2 10 x 2 10 = 1024 x 1024 x 1024 = 1 073 741 824 ja seda lühendatakse endiselt G (suurtähed) nagu 1 Gbits. Järgmine tabel annab nelja eesliite tähenduse tavaelus ja arvutis:

3.11 Probleemid

Lugejal soovitatakse enne järgmise peatüki juurde liikumist lahendada kõik peatüki ülesanded.

  1. Joonistage arvurida täisarvudega vahemikus -10 kuni +10.
  2. Lisage 8-bitise kahe komplementi järgmised kahendarvud: 101010 2 ja 1111 2 .
  3. Kasutage kahendarvu 1111 lahutamiseks ainult kahe komplemendi lähenemisviisi 8-bitises 2 kahendarvust 101010 2 .
  4. Leidke 10110 toode 2 x 1101 2 kahes aluses.
  5. Jaga 36 375 10 1000 võrra 10 kümnend- ja kahendsüsteemis ning võrrelda tulemusi.
  6. Kasutage loogiliste JA, VÕI, XOR, ümberpööramise, nihutamise paremale, nihuta vasakule, pööramise paremale ja pööramise vasakule illustreerimiseks oma valitud 8-bitist. Igas baidis peaks olema 1 ja 0 segu.
  7. a) Kirjutage ASCII-märgi nulli numbriline kood kuueteistkümnend-, kahend- ja kümnendsüsteemis.
    b) Kirjutage ASCII-märgi '1' numbrikood kuueteistkümnend-, kahend- ja kümnendsüsteemis.
    c) Kirjutage 'A' ASCII-märgi numbrikood kuueteistkümnend-, kahend- ja kümnendsüsteemis.
    d) Kirjutage 'a' ASCII-märgi numbrikood kuueteistkümnend-, kahend- ja kümnendsüsteemis.
  8. Teisendus 49,49 10 kaheks aluseks. Teisendage tulemus IEEE 32-bitisesse ujukomavormingusse.
  9. a) Mille poolest erineb IEEE 64-bitine ujukomavorming 32-bitisest vormingust?
    b) Esitage kaks omavahel seotud põhjust, miks 64-bitist vormingut kirjeldatakse topelt- või suurema täpsusena
    32-bitine formaat.