3. nodaļa: Bināro skaitļu darbības mikroprocesorā

3 Nodala Binaro Skaitlu Darbibas Mikroprocesora



3. nodaļa: Bināro skaitļu darbības mikroprocesorā

3.1. Ievads

Datorā aritmētiskās darbības tiek veiktas 8 bitos, 16 bitos, 32 bitos vai 64 bitos. Skaitlis, piemēram, 3 binārajā formā, ir 11. Ja darbība ir jāveic 8 bitos, tas tiek uzskatīts par 00000011; pirms tā ar 0 nullēm.







Bināram skaitlim, piemēram, 10000101, nozīmīgākais bits ir bits galējā kreisajā pusē. Šajā gadījumā tas ir 1. Vismazāk nozīmīgais bits ir skaitļa galējais bits labajā pusē, kas joprojām ir 1. Nozīmīgākais bits ir saīsināts kā MSB. Vismazāk nozīmīgais bits ir saīsināts kā LSB.



Binārais cipars ir saīsināts kā BIT un tiek vienkārši rakstīts kā bits. Skaitlī 10010011 katrs viens vai nulle ir mazliet. Četru bitu grupu sauc par nibble. Astoņu bitu grupu sauc par baitu. Baits sastāv no diviem nibbles. Apakšējais nibble ir nibble LSB un augstākais nibble ir nibble MSB.



8 bitu, 16 bitu, 32 bitu vai 64 bitu grupu sauc par vārdu, ja vien šī grupa sniedz informāciju, kas nav tikai skaitļa norādīšana. Grupu sauc par vārdu, piemēram, ja tā ir zema līmeņa instrukcija datorā. Ir arī 24 bitu vārds, taču tas mūsdienās netiek plaši izmantots.





Endianness attiecas uz secību, kādā baiti veido vārdu. Apsveriet 24 bitu vārdu — 100100001111010100100010. Šis vārds sastāv no trim baitiem, kas ir:

10010000 11110101 00100010



Nozīmīgākais baits ir visvairāk kreisais baits. Ja galējā kreisajā pusē esošais baits ir visnozīmīgākais baits un galējā labajā pusē esošais baits ir vismazāk nozīmīgais baits, to sauc par vārda Big Endian attēlojumu. Little Endian reprezentācija ir pretēja.

Datora atmiņa ir šūnu sērija, un katrā šūnā ir baits. Pirmā šūna datora atmiņā ir paredzēta 0. baitam, otrā ir 1. baitam, trešā ir 2. baitam un tā tālāk. Ar lielu endianitāti un iepriekšējam vārdam visnozīmīgākais baits tiek saglabāts 0. baita šūnā, vidējais baits tiek saglabāts 1. baita šūnā, bet vismazāk nozīmīgais baits tiek saglabāts 2. baita šūnā. Tas nozīmē, ka apakšējā atmiņas šūnā ir vairāk nozīmīgu baitu.

Iepriekšējo 24 bitu vārdu var uzrakstīt apgrieztā baitu secībā šādi:

00100010 11110101 10010000

Tagad vismazāk nozīmīgais baits atrodas galējā kreisajā pusē, bet visnozīmīgākais baits atrodas galējā labajā pusē. Ja galējā kreisajā pusē esošais baits ir vismazāk nozīmīgais baits un galējā labajā pusē esošais baits ir visnozīmīgākais baits, tas ir vārda mazā endija attēlojums. Ar nelielu endianitāti un iepriekšējam vārdam vismazāk nozīmīgais baits tiek saglabāts 0. baita šūnā, vidējais baits tiek saglabāts 1. baita šūnā, bet visnozīmīgākais baits tiek saglabāts 2. baita šūnā. Tas nozīmē, ka apakšējā atmiņas šūnā ir mazāk nozīmīga baita.

Endianness netiek izmantots bitiem baitā. Tas netiek izmantots arī baitā. To izmanto tikai baitu secībai.

Ciparu līnija
Skaitlis bez zīmes ir pozitīvs skaitlis. Pozitīvie skaitļi ir skaitļi no nulles uz augšu. Pastāv arī negatīvi skaitļi. Pozitīvus un negatīvus skaitļus var uzrādīt skaitļu rindā. Sekojošā skaitļu līnija parāda pozitīvos un negatīvos veselos skaitļus (veselus skaitļus), kas ir tuvu nullei:

Negatīvie skaitļi samazinās no nulles uz leju (pa kreisi). Daudzās situācijās nulle tiek uzskatīta par pozitīvu. Tomēr dažās situācijās tas tiek uzskatīts par negatīvu. Tāpēc diagrammā zemākajā numerācijā nulles priekšā ir plusa un mīnusa zīme. Ja skaitlis ir pozitīvs, tā zīmi var izlaist; tas attiecas uz diagrammas augšējo numerāciju. Mīnusa zīme negatīva skaitļa priekšā nekad netiek izlaista.

3.2. Bināro skaitļu pievienošana

Papildus:

A + B = S

A sauc par augendu, B sauc par saskaitījumu, un S sauc par summu.

Apsveriet šādu divu pozitīvu skaitļu pievienošanu otrajā bāzē:

Otrajā bāzē vienīgie iespējamie cipari ir 0 un 1. Summēšana 2. bāzē ir līdzīga saskaitīšanai desmitajā bāzē, bet divi otrajā bāzē ir viens-nulle (10). Ja divu bitu summa kolonnā ir 10, tiek ierakstīts 0 un 1 tiek pārnests uz tiešo kreiso kolonnu; jāpievieno divu tur esošo bitu summai. Ja kopējā summa ir trīs, tas nozīmē 11 bāzē divi. Labais 1 no 11 tiek ierakstīts, un kreisais 1 tiek pārnests, lai to pievienotu tiešās kreisās kolonnas bitu summai. Jebkurā gadījumā 1, kas tiek pārnests pa kreisi, tiek saukts par nešanu.

Lasot iepriekšējo saskaitīšanas tabulu no labās puses, otrajā kolonnā (no labās puses) ir pārnesums, kas izriet no 1+1 = 10. Trešajā kolonnā ir pārnesums, kas izriet no 1+1+ pārnesuma. 1 = 11. Ceturtajā kolonnā ir pārnešana, kas izriet no 0+1+ pārnešanas no 1 = 10. Piektajā kolonnā pārnešana nav, jo summēšana ir 0+0+ pārnešana no 1 = 1. pārējās kolonnas nav saistītas ar pārnēsāšanu.

Kolonnu skaitīšana sākas no labā gala. Ar 16 bitu pievienošanu var notikt pārnešana no astotās kolonnas uz devīto kolonnu (virzoties pa kreisi). Sekojošā tabula to ilustrē:

Aritmētiskās un loģiskās darbības notiek datora mātesplates mikroprocesorā.

8 bitu Word datoram aparatūra nevar automātiski pāriet no astotā bita uz devīto bitu. Tātad, lai šādā datorā pievienotu divas 16 bitu grupas, pievienošana jāveic divas reizes astoņos līdz astoņos bitu pāros. Pārnēsāšanu pārvieto un veic programmatūra (programmēšana).

Lai pievienotu divus skaitļus, pirms pievienošanas skaitļus vispirms var pārvērst to divu komplementa formā (skatiet tālāk).

3.3. Divu komplements un tā bināro skaitļu atņemšana

Datora mātesplatē ir atmiņa un mikroprocesors un citas shēmas. Atmiņa ir astoņu bitu šūnu sērija. Par baitu katrs bits nonāk šūnā. Mikroprocesoram ir dažas atmiņas tipa vietas. Šīs atmiņas tipa vietas sauc par reģistriem. Tātad datorā baitu grupas var īslaicīgi saglabāt atmiņā vai mikroprocesora reģistros.

Jebkurā no šīm krātuvēm katra šūna var aizņemt vai nu 1, vai 0, un nekas cits. Dzīvē ir pozitīvi un negatīvi skaitļi. Pozitīvs skaitlis sākas ar plus zīmi (+), un negatīvs skaitlis sākas ar negatīvu zīmi (-). Ja zīme ir izlaista, skaitlis tiek uzskatīts par pozitīvu skaitli.

Lai atrisinātu šo problēmu ar skaitļa zīmes norādīšanu datorā, veselie skaitļi tiek saglabāti diapazonos. Veseli skaitļi ir veseli skaitļi. Ja iespējamo skaitļu diapazona saglabāšanai tiek izmantoti astoņi biti, kā zīmes bits tiek izmantots galējais kreisais bits. Ja skaitlis sākas ar 0, skaitlis ir pozitīvs skaitlis. Ja tas sākas ar 1, skaitlis ir negatīvs skaitlis. Ja iespējamo skaitļu diapazona saglabāšanai tiek izmantoti sešpadsmit biti, kā zīmes bits tiek izmantots vistālāk kreisākais bits. Ja skaitlis sākas ar 0, t skaitlis ir pozitīvs skaitlis. Ja tas sākas ar 1, skaitlis ir negatīvs skaitlis. Cipari šajā formā tiek saukti par cipariem ar zīmi.

Praksē var būt parakstīti skaitļi 8 bitiem, 16 bitiem, 32 bitiem un 64 bitiem. Jo plašāks tiek izmantots bitu skaits, jo lielāks ir iespējamo skaitļu diapazons, ko var saglabāt.

Divu komplementa veseli skaitļi
Ar divu komplementu pozitīvie skaitļi ir parastie skaitīšanas skaitļi, izņemot to, ka galējais kreisais cipars ir 0. Lai iegūtu atbilstošo negatīvo skaitli jebkuram pozitīvajam skaitlim, apgrieziet katru skaitļa bitu un pievienojiet rezultātam 1. 0 inverts vai papildinājums ir 1. 1 inverts vai papildinājums ir 0. Šajās tabulās ir parādīti daži divu komplementa skaitļi to diapazonos:

3.31. tabula
Divi papildina veselus skaitļus divos bitos
Binārs Decimālzīme
01 +1
00 +0
vienpadsmit -1
10 -2

Pozitīvie binārie skaitļi ir 00 un 01 (tas ir nulle un viens). Vistālākajā kreisajā bitā nulle parāda, ka tie ir pozitīvi skaitļi. 00 ir nedaudz diapazona vidū. Lai iegūtu -1, tiek konstatēts, ka skaitļa 01 inverts ir 10. Tam pievienojot 1 (galējā labajā pusē), iegūst 11.

Tā kā tiek izmantoti divi biti, ir palicis tikai viens bits, lai attēlotu skaitļus diapazonā, kas sastāv no skaitļiem +1, +0 un -1, kas atbilst 01, 00 un 11. Pirmais bits norāda zīmi. Gadās, ka 10 par +2 nav starp šiem trim binārajiem skaitļiem. 10 sākas ar 1, kas nozīmē, ka tam ir jābūt negatīvam skaitlim divu papildinājumā. Tātad diapazonā ir iekļauts 10, kas nozīmē -2.

Ar diviem bitiem divu komplementā visu veselo skaitļu (pozitīvo un negatīvo) skaits, ko var attēlot, ir 2 2 = 4, nevis 2 2 -1 = 3. Nianse rodas, iekļaujot pēdējo negatīvo skaitli, kas ir negatīvs no 2 numurs ar – 1. Šajā gadījumā -2 2-1 = -2 1 = -2. Divu komplementa skaitļu diapazonā 2 bitos nav +2.

3.32. tabula
Divi papildina veselus skaitļus četros bitos
Binārs Decimālzīme
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. gads -5
1010. gads -6
1001 1001
1000 -8

Pozitīvie binārie skaitļi ir no 0000 līdz 0111 (tas ir no nulles līdz septiņiem). Vistālākajā kreisajā bitā nulle parāda, ka tie ir pozitīvi skaitļi. 0000 ir nedaudz diapazona vidū. Lai iegūtu -1, skaitļa 0001 inverts ir 1110. Pievienojot tam 1 (galēji pa labi), iegūst 1111. Lai iegūtu -2, 0010 inverts ir 1101. Pievienojot 1 šim ( no galējās labās puses) dod 1110. Pārējie negatīvie binārie skaitļi, piemēram, no -3 līdz -7, tiek noteikti līdzīgi.

Tā kā tiek izmantoti četri biti, trīs biti ir atstāti, lai attēlotu skaitļus diapazonā, kas ir +7, +6, +5, +4, +3, +2, +1, +0, -1, -2, - 3, -4, -5, -6 un -7, kas atbilst 0111, 0110, 0101, 0100, 0011, 0010, 0001, 0000, 1111, 1110, 1101, 1100, 1010, 1, 1010 un 1010.

-8, kas atbilst 1000, ir jārisina atsevišķi. Pirmais bits visiem šiem skaitļiem norāda zīmi 0 pozitīviem skaitļiem un 1 negatīviem skaitļiem. Gadās, ka 1000 nav starp šiem četrpadsmit binārajiem skaitļiem. 1000 sākas ar 1, kas nozīmē, ka tam ir jābūt negatīvam skaitlim, ciktāl tas attiecas uz divu papildinājumu. Tātad diapazonā ir iekļauts 1000, kas nozīmē -8.

Ja divu komplementā ir četri biti, visu veselo skaitļu (pozitīvo un negatīvo) skaits, ko var attēlot, ir 2 4 = 16, nevis 2 4 – 1 = 15. Nianse rodas, iekļaujot pēdējo negatīvo skaitli, kas ir negatīvs no 2 numursPlatums – 1. Šajā gadījumā -2 4 -1 = -2 3 = -8. Ciparu diapazonā nav +8.

Iepriekšējo analīzi diviem, četriem un plašākiem bitiem divu komplementā var attiecināt uz 8 bitiem, 16 bitiem, 32 bitiem un 64 bitu platiem binārajiem skaitļiem.

Divu komplements upurē pirmo (kreiso) bitu zīmei 0 pozitīvam skaitlim un 1 negatīvam skaitlim. “n” bitu platajai bitu grupai ir 2 n kopā pozitīvi plus negatīvie skaitļi. Tas būtu 2 n -1, ja nebūtu iekļauts pēdējais laimīgais (mazākais) negatīvais skaitlis. Lielākais pozitīvais skaitlis ir +2 n-1 -1 un mazākais negatīvais skaitlis ir -2 n-1 -1. Tas būtu -2 n-1 -1, ja nebūtu laimīgais -2 n-1 iekļauts.

Skaitļu atņemšana divu komplementā
Atņemot:

A – B = D

A sauc par mazo daļu, B sauc par apakšrindu, un D sauc par starpību.

Lai atņemtu vienu pozitīvu bināro skaitli no cita pozitīva bināra skaitļa, minuend tiek ierakstīts divu komplementā un apakšrinda tiek pārveidota par tā negatīvo divu komplementa vērtību. Tātad matemātiskais apgalvojums kļūst:

A+ – B = D

Citiem vārdiem sakot, divu komplementa atņemšanā apakšrinda tiek pārveidota par negatīvu skaitli un pēc tam pievienota mazajam skaitlim.

3.31. piemērs:
Novērtējiet šādu decimālo izteiksmi divu komplementā, izmantojot četrus bitus:

6-4

Risinājums:
Binārais skaitlis 6 ir 110. 4 bitu divu komplementā tas ir 0110. Binārais skaitlis +4 ir 100. 4 bitu divu komplementā tas ir 0100. 0100, kas divos ir jāpārvērš par negatīvu 4 papildināt šādi: 0100 papildinājums vai inversija ir 1011. Pievienojot tam 1 no labās puses, kā mēs to darījām papildus, iegūstam 1100. Tātad decimālā izteiksme ir:

6–4, kas kļūst par:

0110–0100, kas ir

0110 +(– 0100) = 0110 + 1100 izdarīts tāpat kā iepriekšējā pievienošanas sadaļā:

Piezīme: 0110 +(– 0100) ir tas pats, kas 6 + – 4

Atņemot divu komplementu, jebkura pārnešana pēc pēdējās kolonnas pa kreisi tiek izmesta. Atņemot decimāldaļās, matemātiskais paziņojums ir:

6-4 = 2

Darot to pašu divu komplementā, atbilde ir 0010, kas ir +2 divu komplementa binārajā skaitīšanā. Iepriekšējā atņemšana no lielāka skaitļa atņem mazāku skaitli. Nākamajā piemērā lielāks skaitlis tiek atņemts no mazāka skaitļa. Tabulu 3.32 var apskatīt, lai noskaidrotu, vai 0010 patiešām ir divu papildinājums, kas ir līdzvērtīgs +2.

3.32. piemērs:
Novērtējiet šādu decimālo izteiksmi divu komplementā ar četriem bitiem:

4-6

Risinājums:
Binārais skaitlis 4 ir 100. 4 bitu divu komplementā tas ir 0100. Binārais skaitlis +6 ir 110. 4 bitu divu komplementā tas ir 0110. 0110 ir jāpārvērš par negatīvu 6 divu komplementā. šādi: 0110 papildinājums vai inversija ir 1001. Pievienojot tam 1 no labā gala, kā mēs to darījām iepriekšējā papildinājumā, iegūstam 1010. Tātad decimālā izteiksme ir:

4–6, kas kļūst par:

0100–0110, kas ir

0100 +(– 0110) = 0100 + 1010 izdarīts tāpat kā iepriekšējā pievienošanas sadaļā:

Piezīme: 4+ – 6 ir tas pats, kas 0100 +(– 0110).

Atņemot divu komplementu, jebkura pārnešana pēc pēdējās kolonnas pa kreisi tiek izmesta. Atņemot decimāldaļās, matemātiskais paziņojums ir:

4 – 6 = -2

Veicot to pašu divu komplementā, atbilde ir 1110, kas ir -2 divu komplementa binārajā skaitīšanā. Tabulu 3.32 var skatīt, lai noskaidrotu, vai 1110 patiešām ir divu papildinājums, kas ir līdzvērtīgs -2.

3.4. Bināro skaitļu reizināšana

Paziņojumā:

A x B = P

A sauc par reizinātāju, B sauc par reizinātāju, un P sauc par reizinājumu. Izteiksme A x B nozīmē saskaitīt A, B reižu skaitu, kad A un B ir veseli skaitļi (veseli skaitļi).

Reizināšana binārā ir tāda pati kā reizināšana decimāldaļā. Tomēr tā vietā, lai to darītu decimāldaļās, tas tiek darīts binārā veidā. Decimālās izteiksmes 42 x 10 reizināšanu veic bināri šādi, kur 42 10 = 101010 2 un 10 10 = 1010 2 :

4 pievienotie skaitļi tiek saukti par daļējiem produktiem. Atbilde ir produkts. Daļējo produktu pievienošana tiek veikta tādā pašā veidā, kā paskaidrots iepriekš.

Reizināšanu var redzēt arī šādi: Šajā bāzē divreizinājumā, ja bits (cipars) reizinātājā ir 1, tā daļreizinājuma vismazāk nozīmīgais bits ir reizinātāja vismazāk nozīmīgais bits, kas tiek pārrakstīts tieši zem tā; un pārējie reizinātāja biti tiek atkārtoti pa kreisi. Šajā divu reizināšanas bāzē, ja bits (cipars) reizinātājā ir 0, tā daļējā reizinājums sastāv no 0 ar vismazāko bitu 0 tieši zem tā. Visu nullju skaits ir bitu skaits reizinātājā.

3.5. Bināro skaitļu dalījums

Paziņojumā:

A ÷ B = Q

A sauc par dividendi, B sauc par dalītāju, un P sauc par koeficientu. Koeficientam var pievienot atlikumu. Izteiksme A ÷ B nozīmē, cik reižu B var pievienot, lai iegūtu A vai būtu tuvu tam, lai atlikums būtu 0 vai mazāks par B.

Sadalīšanu var veikt dažādos veidos. Šeit parādītais sadalījums ir atjaunošanas iedalījums.

Nodaļas atjaunošana
Šī ir garās dalīšanas metode, ko apgūst skolās. Ja 237 dala ar 6, atbilde ir 39, atlikums 3. 237 10 2. bāzē ir 11101101 2 un 6 10 2. bāzē ir 110 2 . 39 10 2. bāzē ir 100111 2 un 3 10 2. bāzē ir 11 2 .

Tātad, 11101101 2 dalīts ar 110 2 dod 100111 2 atlikums 11 2 otrajā bāzē. Izmantojot atjaunošanas metodi, binārie skaitļi ir parastie skaitļi, un tie ne vienmēr ir divu komplementā. Šāda struktūra sadala 11101101 2 līdz 110 2 iedot 100111 2 atlikums 11 2 :

Atņemšana tiek veikta parasti, nevis izmantojot abu papildinājumu. Tā kā šī ir otrā bāze, aizņēmums ir divi, nevis desmit. Daļējās dividendes ir 10, 101, 1011, 1010 un 1001. 11 ir atlikums. Tā kā dalītājam ir trīs cipari, dalīšana pamatā tiek veikta trīs ciparu grupās no dotās dividendes. Koeficients ir vesels skaitlis (vesels skaitlis), un šai problēmai tas ir 100111. Koeficients un atlikuma rezultāts ir tāds, kā paredzēts.

3.6. Aritmētiskās darbības ar programmatūru un aparatūru

Datora mātesplatē ir pulkstenis. Pulksteņa tikšķus sauc par impulsiem. Pie katra pulksteņa impulsa dažādās mātesplates vietās tiek pieņemts viens vai vairāki lēmumi; un tas ir saistīts ar programmēšanu (programmatūru).

Mikroprocesora iekšpusē ir divu veidu ķēdes, ko sauc: kombinētās loģiskās shēmas un secīgās loģiskās shēmas. Ir arī cita veida ķēde, ko sauc par multipleksoru. Saskaitīšana, reizināšana un dalīšana var notikt viena pulksteņa intervālā, izmantojot kombinēto loģiku (shēmu). Programmēšana (programmatūra) pieņem lēmumu katrā pulksteņa impulsā, izmantojot secīgās loģiskās shēmas un multipleksorus.

Ja atņemšana tiek veikta, izmantojot divu komplementu, ir nepieciešami vismaz divi pulksteņa impulsi. Pie pirmā pulksteņa impulsa multiplekseris novirza apakšrindu uz NOT vārtiem (viens NOT vārti uz katru ciparu). Pie otrā pulksteņa impulsa kombinētā loģika pievieno 1 NAV vārtu izvadei un turpina pievienot iegūto apakšrindu un minuend. Visa šī pievienošana var notikt viena pulksteņa intervālā.

Saskaitīšanu, reizināšanu un dalīšanu joprojām var samazināt, programmējot, izmantojot patiesības tabulas. Tomēr tas nav apskatīts šajā tiešsaistes karjeras kursā.

3.7 Loģiskās darbības mikroprocesorā

UN, VAI, XOR un Invertēt

UN
Nākamajā tabulā ir parādīts Bitwise UN. Tas nozīmē, ka diviem dažādiem bināriem skaitļiem atbilstošie biti tiek AND AND, pamatojoties uz UN patiesības tabulu:

Pārvietojoties no kreisās puses uz labo, 1 UN 1 = 1; 0 UN 1 = 0; 0 UN 0 = 0; 1 UN 0 = 0; un tā tālāk saskaņā ar UN patiesības tabulu.

VAI
Nākamajā tabulā ir parādīts Bitwise VAI. Tas nozīmē, ka diviem dažādiem bināriem skaitļiem atbilstošie biti tiek apzīmēti VAI, pamatojoties uz VAI patiesības tabulu:

Pārvietojoties no kreisās puses uz labo, 1 VAI 1 = 1; 0 VAI 1 = 1; 0 VAI 0 = 0; 1 VAI 0 = 1; un tā tālāk saskaņā ar VAI patiesības tabulu.

BEZMAKSAS
Nākamajā tabulā ir parādīts Bitwise ekskluzīvais VAI. Tas nozīmē, ka diviem dažādiem bināriem skaitļiem atbilstošie biti tiek XOR rediģēti, pamatojoties uz XOR patiesības tabulu:

Pārvietojoties no kreisās puses uz labo, 1 XOR 1 = 0; 0 XOR 1 = 1; 0 XOR 0 = 0; 1 XOR 0 = 1; un tā tālāk saskaņā ar XOR patiesības tabulu.

Invertēt (NOT)
Nākamajā tabulā parādīts Bitwise NOT (apgriezts). Tas nozīmē, ka vienam bināram skaitlim šoreiz katrs bits tiek apgriezts, pamatojoties uz NOT Truth Table:

Pārvietojoties no kreisās puses uz labo, NOT 1 = 0; NAV 0 = 1; NAV 0 = 1; NOT 1 = 0; un tā tālāk saskaņā ar NAV patiesības tabulu.

Pārslēgšanās pa labi vai pa kreisi

Shift pa labi
Šis binārais skaitlis tiek pārvietots par 3 bitu pozīcijām pa labi, bet nulles tiek ievietotas atbrīvotajās bitu pozīcijās kreisajā pusē:

Pārslēgšanu var veikt uz vienu, divām, trim, četrām utt. vietām.

Shift pa kreisi
Šis binārais skaitlis tiek pārvietots par 3 bitu pozīcijām pa kreisi, bet nulles tiek ievietotas atbrīvotajās bitu pozīcijās labajā pusē:

Pārslēgšanu var veikt uz vienu, divām, trim, četrām utt. vietām.

Rotācija pa labi vai pa kreisi

Rotēšana ir līdzīga pārslēgšanai. Tas tiek darīts pa vienam bitam. Pagriežot pa labi, uzgaļi, kas atstāj labo galu, nekrīt nost kā pārslēdzot; tie pa vienam nomaina atbrīvotos bitus kreisajā pusē. Rotējot pa kreisi, uzgaļi, kas atstāj kreiso galu, nenokrīt kā pārslēgšanā; tie pa vienam nomaina atbrīvotos bitus labajā pusē.

Pagriezt pa labi
Šis binārais skaitlis tiek pagriezts par 3 bitu pozīcijām pa labi:

Rotēšanu var veikt vienai, divām, trim, četrām utt. vietām.

Rorate pa kreisi
Šis binārais skaitlis tiek pagriezts par 3 bitu pozīcijām pa kreisi:

Rotēšanu var veikt vienai, divām, trim, četrām utt. vietām.

3.8. ASCII rakstzīmju kopa un tās koda vērtības

ASCII apzīmē “Amerikas (ASV) informācijas apmaiņas standarta kods”. Iedomājieties tastatūru ar 96 taustiņiem. Šī ir ideāla tastatūra, kurā lielo burtu taustiņi atšķiras no mazo burtu taustiņiem. Katrs otrais taustiņš apzīmē rakstzīmi, kas atrodas uz angļu (ASV) tastatūras. Rakstzīmes un kodi (rakstzīmju attiecīgie cipari) ir norādīti tālāk norādītajā sarakstā.

Šajā tabulā pirmās 32 rakstzīmes (ieskaitot rakstzīmi ar 00 16 = 0 10 kods) ir nedrukājamas rakstzīmes. Tās ir kontroles rakstzīmes. Tie nav redzami ekrānā (monitorā), kur viss ir vienāds. Viņiem ir tikai sekas. Parunāsim par to vairāk vēlāk.

Pārējās rakstzīmes ir drukāšanas rakstzīmes; tie ir redzami ekrānā. Ir 128 ASCII rakstzīmes. 2 7 = 128. 1 111 111 2 = 127 10 . 7 in 2 7 nozīmē 7 bitus.

Tagad 1111111 2 +1 2 ir tāds pats kā:

Lūk, 10 000 000 2 = 128 10 . Ir 128 10 rakstzīmes iepriekšējā ASCII rakstzīmju sarakstā (tabulā). Tas ietver nulles rakstzīmi, kuras kods sešpadsmitajā bāzē (heksadecimālā) ir 00, kas ir līdzvērtīgs 0 bāzē desmit.

Tā kā kopā ir 128 rakstzīmes, no 128 mīnus 32 nedrukāšanas rakstzīmes iegūst 96 drukāšanas rakstzīmes. Šajā sadaļā tiek pieņemts, ka ir ideāla tastatūra ar 96 rakstzīmēm, kas ir drukājamas rakstzīmes. Šajā ideālajā tastatūrā angļu valodas lielo burtu taustiņi atšķiras no angļu valodas mazo rakstzīmju taustiņiem.

Katra rakstzīme uz tastatūras ir attēlota ar diviem pamata cipariem, kas sastāv no 7 bitiem, kas nav parādīti sarakstā. Piemēram, lielais burts “N” tiek attēlots ar septiņiem bitiem 1001110 2. bāzē. Lai pārvērstu 1001110 2 līdz 16. bāzei, pirms tā ievadiet 0 un grupējiet rezultātu četru bitu apakšgrupās šādi:

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

Tas ir 01001110 2 = 4E 16 . Lai pārvērstu 4E 16 līdz desmit, rīkojieties šādi:

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

Pa labi no “N” sarakstā (tabulā) ir heksadecimālais skaitlis 4E un decimālskaitlis 78.

Kā citu piemēru, rakstzīmi “[” attēlo septiņi biti 1011011 2. bāzē. Lai pārvērstu 1011011 2 līdz 16. bāzei, pirms tā ievadiet 0 un grupējiet rezultātu četru bitu apakšgrupās šādi:

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

Tas ir 01011011 2 = 5B 16 . Lai pārvērstu 5B16 par desmito pamatu, rīkojieties šādi:

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

Pa labi no “[” sarakstā (tabulā) ir heksadecimālais skaitlis 5B un decimālskaitlis 91.

Vēl viens piemērs ir decimālā skaitļa “5” rakstzīme 2. bāzē ar septiņiem bitiem 0110101 un 0000101 bāzē 2. Pārveidot 0110101 2 līdz 16. bāzei, pirms tā ievadiet 0 un grupējiet rezultātu četru bitu apakšgrupās šādi:

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

Tas ir 00110101 2 = 35 16 . Lai konvertētu 3516 uz desmito pamatu, rīkojieties šādi:

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

Pa labi no “5” sarakstā (tabulā) ir heksadecimālais skaitlis 35 un decimālskaitlis 53.

Tā kā dators strādā baitos, nospiežot ideālās tastatūras taustiņu, uz mikroprocesoru (mātesplati) tiek nosūtīti astoņi biti. Ideāla tastatūra ir perifērijas ierīce, kas ir atdalīta no datora sistēmas (bāzes) bloka. Tam ir elektroniskā shēma (IC), kas izveido septiņus bitus un pirms tā ar nulli, pirms to nosūta pa kabeli uz sistēmas vienības mātesplati. No mātesplates ievades porta (ievades ķēdes) tas nonāk mikroprocesorā, kas arī atrodas mātesplatē. No mikroprocesora tas pāriet uz atmiņu, kas arī ir uzstādīta mātesplatē.

Tātad, nospiežot ideālās tastatūras taustiņu “N”, mikroprocesorā tiek novirzīti astoņi biti 01001110. No mikroprocesora tie tiek pārnesti uz atmiņu, kur tie paliek atmiņas vietā kā baits. Datorprogrammētājam jāpatur prātā, ka 01001110 astoņi biti 2 ir tāds pats kā 4E 16 kas ir tāds pats kā 78 10 .

Nospiežot ideālās tastatūras taustiņu “[”, mikroprocesorā tiek novirzīti astoņi biti 01011011. No mikroprocesora tie tiek pārnesti uz atmiņu, kur tie paliek atmiņas vietā kā baits. Datorprogrammētājam jāpatur prātā, ka 01011011 astoņi biti 2 ir tāds pats kā 5B 16 kas ir tāds pats kā 91 10 .

Nospiežot taustiņu “5” ideālajā tastatūrā kā rakstzīmi, nevis kā decimālskaitli, mikroprocesorā tiek pārsūtīti astoņi biti 00110101. No mikroprocesora tie tiek pārnesti uz atmiņu, kur tie paliek atmiņas vietā kā baits. Datorprogrammētājam jāpatur prātā, ka 00110101 astoņi biti 2 ir tāds pats kā 35 16 kas ir tāds pats kā 5310 10 .

Ir gadījumi, kad programma darbojas un gaida, līdz datorā tiks ievadīts decimālskaitlis 5. Šādā situācijā, ja tiek nospiests ideālās tastatūras taustiņš “5”, mikroprocesoram joprojām tiek nosūtīts astoņu bitu kods 00110101. Tā kā ir nepieciešams decimālskaitlis 5, nevis rakstzīme “5”, koda fragments (īsā programma) no atmiņas izmanto mikroprocesoru, lai otrās bāzes rakstzīmes kodu 00110101 pārveidotu par divu komplementa numuru 00000101. 2 pirms nosūtīšanas uz atmiņas vietu kā divu komplementa baitu. Datorprogrammētājam ir jāņem vērā, ka 00000101 nozīmē 5 10 2. bāzē, un tas atšķiras no koda numuriem 00110101 2 , 35 16 un 53 10 kas nozīmē '5' rakstzīmi. Lai atmiņā parādītu abu komplementa numuru 00000101, citai īsai programmai ir jāpārvērš 00000101 no atmiņas par 00110101. Tas ir 00110101, kas ir tāds pats kā 35. 16 kas ir tāds pats kā 53 10 kas tiek parādīts monitorā (vai printeris izdrukā uz papīra).

3.9 Peldošā komata skaitļu formāts

Skaitlis bez decimāldaļas ir vesels skaitlis. Skaitlis 36 ir vesels skaitlis. 36,375 nav vesels skaitlis. Tas ir decimālskaitlis ar decimāldaļu. Decimāldaļa 0,375 ir daļa, kas ir mazāka par 1.

36.375 decimāldaļā tiek interpretēts šādi:

Tagad:

Tātad, 100100 2 = 3610, kas ir 36.375 veselā skaitļa daļa 10 .

Tagad:

Tātad, 0,011 2 = 0,375 10 kas ir decimālskaitļa daļa no 36,375 10 .

∴ 36 375 10 = 100100,011 2

Izsakiet to citā veidā:

100100.011 2 = 36 375 10

Skaitļi datorā tiek attēloti 2. bāzē, nevis 10. bāzē, un viss ir vienāds. Tā kā šūnai mikroprocesora reģistrā vai šūnai atmiņā var būt tikai 1 vai 0, nav vietas komata glabāšanai. Tas rada problēmas. Kā izšķirtspēja ir IEEE-754 vienas precizitātes 32 bitu peldošā komata attēlojums un IEEE-754 dubultās precizitātes 64 bitu peldošā komata attēlojums.

32 bitu peldošā komata skaitļu formāts
Skaitli 100100.0112 var izteikt šādi:

100100.011 2 = 1,00100011 2 x 2 +5

Simbola = labā puse matemātikā tiek saukta par 100100.011 kreisās puses divu pamata standarta formu. 2 .

Tagad 00100011 no 1,00100011 2 simbola = labajā pusē bez “1”. un bez 2, kas apzīmē bāzi, tiek saukts par nepārprotamo nozīmi. Šajā gadījumā binārais punkts tiek paņemts piecas vietas pa kreisi, lai iegūtu “1”. Nejauciet decimālzīmi un bināro komatu. Binārais punkts ir 2. bāzei, bet decimālzīme ir 10. bāzei. 00100011 simbola = labajā pusē bez 2, kas nozīmē bāzi, veido patieso nozīmi. Tomēr 1,00100011 sauc par netiešo nozīmīgo.

Aiz apzīmējuma labajā pusē ir “x 2 +5 ” izteiciens. Izmantojot šo izteiksmi, +5 sauc par eksponentu. Plusa zīme nozīmē, ka binārais punkts ir jāpārvieto piecas vietas uz priekšu, lai tas atrastos parastajā sākotnējā pozīcijā, un 2 ir numerācijas pamats. Iepriekšējo vienādojumu var uzrakstīt apgriezti šādi:

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

Izmantojot 32 bitu peldošā komata attēlojumu, tas ir “1.00100011 2 x 2 +5 ”, kas tiek izmantots, nevis tikai “100100.011 2 ”. Bāzes skaitlis 2 netiek ierakstīts. 32 bitu peldošā komata attēlojums failam “1.00100011 2 x 2 +5 ” skaitli, kas ir vienāds ar 36,375 10 = 100100,011 2 , ir parādīts šajā tabulā:

Ir 32 bitu pozīcijas, kuras numurē no labā gala, sākot no 0. Pirmais bits kreisajā galā ir zīmes bits. Ja skaitlis ir pozitīvs, šis bits ir 0. Ja skaitlis ir negatīvs, šis bits ir 1 (-1 sastāv no divām rakstzīmēm un to nevar ievietot nevienā šūnā). 1.00100011 2 x 2 +5 kas ir vienāds ar 36.375 10 kas arī ir vienāds ar 100100.011 2 ir pozitīvs skaitlis. Tātad pirmais bits ir 0.

Eksponentam ir astoņas bitu pozīcijas, sākot no 30. pozīcijas līdz 23. pozīcijai, ieskaitot. Tomēr tur uzrakstītais eksponents ir 10000100 2 kas ir vienāds ar 132 10 . Interesējošā skaitļa eksponents faktiski ir +5 no bāzes divi. Tātad, kas notiek?

Tagad 32 bitu formātā eksponents 0 tiek rakstīts kā 01111111 2 kas ir vienāds ar 127 10 . +5 10 ir +101 2 . Tātad, ierodoties pie 10000100 2 eksponentu daļā tabulā, 101 2 tika pievienots 01111111 2 , attiecīgi. Tas nozīmē, ka 5 tika pievienoti 127, lai iegūtu 132 10 .

Nozīmīgais bez “1.” ieņēma pozīcijas no 22 līdz 15, ieskaitot. Ņemiet vērā, ka 1 no “1”. nav norādīts 32 bitu virknē. Tas nekad nav norādīts – pieņem to. Pārējās šūnas līdz 0. pozīcijai ir aizpildītas ar nullēm.

Ja faktiskais eksponents ir -5, tad 5 tiek atņemts no 127 10 lai būtu 122 10 . Tas atbilst 101 atņemšanai 2 no 01111111 2 saņemt 01111010 2 .

Ar visu iepriekšējo ilustrāciju skaitlis +1, kas ir vienāds ar 1,0 x 2 0 = 1,0 x 1 = 1,0 ir attēlots kā:

Ņemiet vērā, ka “1. no 1,0 x 2 0 formātā nav norādīts. Tas nekad nav norādīts. Nākamā jauktā daļa, kas ir pozitīva pēc 1,0, ir:

Ievērojiet 1 labajā galā. Šis attēlojums ir skaitlis:

Atšķirība starp 1,0000001192092896 un 1,0 ir:

1,0000001192092896 – 1,0 = 0,0000001192092896

Skaitļi ar decimāldaļām ir jauktas daļdaļas. Ne visas daļas starp 1 10 un 2 10 var attēlot datorā. Var pieņemt, ka mazākā daļēja atstarpe starp secīgiem jauktiem skaitļiem ar 32 bitu peldošā komata formātu ir 0,0000001192092896. Sagaidiet, ka dubultās precizitātes intervāls būs mazāks. Skatiet tālāk redzamo ilustrāciju.

Apzīmējot skaitli, 0.0 neatbilst iepriekšējiem argumentiem. 0.0 attēlojums ir deklarēts, un tas ir jāapgūst kā tāds. Lai attēlotu 0,0, visas nozīmīgā skaitļa šūnas ir 0 un visas eksponenta šūnas arī ir nulle. Zīmes bits var būt 0 vai 1. Diemžēl tas rada pozitīvu 0 un negatīvu 0 šādi:

Reālajā dzīvē ir tikai viena nulle. Pozitīvs 0 un negatīvs 0 nepastāv. Tomēr 0 parasti tiek uzskatīts par pozitīvu. Šī konkrētā formāta apraksta dēļ šeit pastāv pozitīvs 0 un negatīvs 0. Ciparu rindā (skat. iepriekš) var būt arī +0 un -0, taču pastāv tikai viena nulle.

64 bitu peldošā komata skaitļu formāts
64 bitu peldošā komata formāts ir līdzīgs 32 bitu formātam, taču ar šādām atšķirībām:

  • Skaitļa attēlošanai ir 64 biti.
  • Pēc zīmes bita eksponenta skaitlim ir 11 biti.
  • Eksponenta skaitlis nulles indeksam (2 0 ) ir 1023 10 = 01111111111 2 .
  • Vienpadsmit bitiem seko 52 biti, kas norāda uz skaidru nozīmi.
  • Tam ir plašāks skaitļu diapazons nekā 32 bitu formātam.

Ņemiet vērā, ka “1. tas ir nozīmes sākumā un joprojām nav iekļauts starp 64 bitiem, tāpat kā tas nav iekļauts starp 32 bitiem 32 bitu formātā.

Viena no svarīgākajām atšķirībām starp 64 bitu formātu un 32 bitu formātu ir tā, ka atšķirība starp secīgām jauktajām daļām 64 bitu formātā ir mazāka nekā 32 bitu formātā.

64 bitu formātā intervālu (atstarpi) starp 1,0 un nākamo jaukto daļu var aprēķināt šādi:

1.0 ir

0 01111111111 000000000000000000000 000000000000 000000000000000000000 2

Tas ir līdzvērtīgs '1.', kas nav norādīts virknē, reizināts ar 2, kas palielināts līdz pakāpei (indeksam) 0 (ar eksponentu 1023 10 = 01111111111 2 par 2 0 = 1). Virkne ir 1,0 x 2 0 .

Nākamā jauktā frakcija, kas lielāka par 1,0, ir:

0 01111111111 000000000000000000000 00000000000 0000000000000000000001 2

Tas ir līdzvērtīgs “1”. kas nav norādīta virknē, kam seko 51 nulle un pēc tam 1, reizināts ar 2, kas palielināts līdz pakāpei 0 (ar eksponentu 1023 10 = 011111111112 2 par 2 0 = 1). Tas ir tāds pats kā:

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

≈ nozīmē aptuveni vienāds ar.

Tagad:

1,0000000000000002 – 1,0 ≈ 0,00000000000000002

Atbilstošā intervāla vērtība 32 bitu formātam ir 0,0000001192092896 ≈ 0,00000012.

0,0000000000000002 ir daudz mazāks par 0,00000012. Tātad starp diviem secīgiem veseliem skaitļiem (piemēram, 3 un 4) 64 bitu formātā ir daudz vairāk jauktu daļskaitļu nekā starp diviem secīgiem veseliem skaitļiem 32 bitu formātā.

Jaukto daļu skaits starp diviem secīgiem veseliem skaitļiem skaitļu rindā ir bezgalīgs. Tātad neviens formāts (piemēram, 32 bitu vai 64 bitu) nevar nodrošināt visas jauktās daļas starp jebkuriem diviem secīgiem veseliem skaitļiem (veseliem skaitļiem). Jo mazāka ir atstarpe (intervāls) starp diviem secīgiem veseliem skaitļiem, ko nodrošina formāts (piemēram, 32 bitu vai 64 bitu), jo lielāks ir jaukto daļu skaits starp secīgajiem veselajiem skaitļiem (skaitļu līnijai).

Iemesli, kāpēc 64 bitu formāts tiek raksturots kā dubultā vai augstāka precizitāte salīdzinājumā ar 32 bitu formātu, ir tas, ka intervāls starp divām secīgām jauktām daļām, ko ierobežo divi secīgi veseli skaitļi 64 bitu formātam, ir mazāks par atbilstošo 32. -bitu formāta intervāls. Turklāt ir vairāk iespējamo jaukto daļu starp diviem ierobežotiem veseliem skaitļiem 64 bitu formātā nekā attiecīgi 32 bitu formātā.

Decimālskaitļa decimāldaļas (daļdaļas) pārvēršana binārā daļā
36,375 ir decimālskaitlis ar decimāldaļu “.375”. Decimāldaļa “.375” ir daļa no nulles līdz vienam. 0,5 desmitajā bāzē pēc vērtības ir tāda pati kā 1/2 otrajā bāzē. 0.5 10 kas izteikts ar divu bāzu izvērsumu, ir:

Tas nav 0,101 2 kas nozīmē 0,625 10 . Decimālskaitļa decimāldaļai ir līdzvērtīga binārā daļa attiecīgajam binārajam skaitlim. Tātad, lai pārvērstu decimālskaitli, piemēram, 36,375 10 lai bāzētu divus, pārveidojiet 36 par bināru un pēc tam konvertējiet 0,375 arī uz bināru. Pēc tam savienojiet abus rezultātus ar bināro punktu. Abu sadaļu konvertēšanas metodes atšķiras. Kā pārvērst veselu decimālo skaitli par 2. bāzi, ir paskaidrots 1. nodaļā.

Lai decimālo daļu pārvērstu binārā daļā, veiciet tālāk norādītās darbības.

  • Reiziniet decimālo daļu (decimālo daļu) ar 2. No tā izrietošais veselais skaitlis ir pirmais binārais cipars.
  • Atkārtojiet iepriekšējo darbību ar decimāldaļskaitļa rezultātu, lai iegūtu nākamo bināro ciparu.
  • Turpiniet atkārtot iepriekšējo darbību, līdz decimāldaļskaitļa rezultāts ir 0,0000—.

Piemērs: konvertējiet 36,375 daļējo daļu 10 līdz ekvivalentajai daļējai daļai otrajā bāzē.

Risinājums:

Ņemiet vērā, ka trešajā darbībā 0,500 tika reizināts ar 2, nevis 1,500. Bināro atbilstošo daļu nolasa pēdējā kolonnā no augšas. Tātad rezultāts ir šāds:

.375 10 = 0,011 2

Binārā skaitļa binārās daļas (daļdaļas) pārvēršana decimālajā daļā
Lai to panāktu, paplašiniet bināro daļu 2 savstarpējās pakāpēs.

Piemērs: konvertējiet 100100.011 daļējo daļu 2 līdz ekvivalentajai daļējai daļai bāzē desmit.

Risinājums:

3.10. Skaitļu prefiksi skaitļošanā

Normālā dzīvē 1 kilograms nozīmē 1000, kas ir saīsināti k (mazais burts), tāpat kā 1 kg. Datorā 1 kilograms nozīmē 2 10 = 1024, bet ir saīsināts K (lielie burti), tāpat kā 1Kbits. Parastā dzīvē 1 mega nozīmē 1 000 000, kas ir saīsināti ar M (lielie burti), tāpat kā 1Mg. Datorā 1 mega nozīmē 2 divdesmit = 1 048 576 = 2 10 x 2 10 = 1024 x 1024 = 1 048 576 un joprojām ir saīsināts ar M (lielie burti), tāpat kā 1 Mbits. Parastā dzīvē 1 giga nozīmē 1 000 000 000 saīsināti ar G (lielie burti), tāpat kā 1 Gg. Datorā 1 giga nozīmē 2 30 = 1 073 741 824 = 2 10 x 2 10 x 2 10 = 1024 x 1024 x 1024 = 1 073 741 824 un joprojām ir saīsināts ar G (lielie burti), tāpat kā 1 Gbits. Šajā tabulā ir sniegta četru prefiksu nozīme parastajā dzīvē un skaitļošanā:

3.11 Problēmas

Pirms pāriet uz nākamo nodaļu lasītājam ir ieteicams atrisināt visas nodaļas problēmas.

  1. Uzzīmējiet skaitļu līniju ar veseliem skaitļiem no -10 līdz +10.
  2. Pievienojiet šādus bināros skaitļus 8 bitu divu komplementā: 101010 2 un 1111 2 .
  3. Izmantojiet tikai divu komplementa pieeju 8 bitos, lai atņemtu bināro skaitli 1111 2 no binārā skaitļa 101010 2 .
  4. Atrodiet preci no 10110 2 x 1101 2 otrajā bāzē.
  5. Sadaliet 36 375 10 par 1000 10 decimāldaļās un bināros un salīdziniet rezultātus.
  6. Izmantojiet 8 bitus pēc savas izvēles, lai ilustrētu loģiskos UN, VAI, XOR, Invert, Shift Right, Shift Left, Rotate Right un Rotate Left. Katrā baitā jābūt 1 un 0 sajaukumam.
  7. a) Uzrakstiet nulles ASCII rakstzīmes ciparu kodu heksadecimālajā, binārajā un decimāldaļā.
    b) Uzrakstiet ciparu kodu ASCII rakstzīmei “1” heksadecimālajā, binārajā un decimāldaļā.
    c) Ierakstiet ASCII rakstzīmes “A” ciparu kodu heksadecimālajā, binārajā un decimāldaļā.
    d) Uzrakstiet ASCII rakstzīmes “a” ciparu kodu heksadecimālajā, binārajā un decimāldaļā.
  8. Konvertēt 49,49 10 otrajā bāzē. Konvertējiet rezultātu IEEE 32 bitu peldošā komata formātā.
  9. a) Kā IEEE 64 bitu peldošā komata formāts atšķiras no 32 bitu formāta?
    b) Norādiet divus saistītos iemeslus, kāpēc 64 bitu formāts ir aprakstīts kā dubultā vai augstāka precizitāte nekā
    32 bitu formāts.