3. fejezet: Bináris számműveletek a mikroprocesszorban

3 Fejezet Binaris Szammuveletek A Mikroprocesszorban



3. fejezet: Bináris számműveletek a mikroprocesszorban

3.1 Bevezetés

Egy számítógépben az aritmetikai műveleteket 8 bites, 16 bites, 32 bites vagy 64 bites méretekben hajtják végre. Egy olyan szám, mint a 3 binárisban, 11. Ha a műveletet 8 bitben kell végrehajtani, akkor ez 00000011; előtte 0 nulla.







Egy bináris szám esetében, mint például az 10000101, a legjelentősebb bit a bal szélső bit. Ebben az esetben az 1. A legkisebb jelentőségű bit a jobb oldali szélső bit, amely továbbra is 1, a szám számára. A legjelentősebb bitet MSB-nek rövidítik. A legkisebb jelentőségű bitet LSB-nek rövidítjük.



A bináris számjegyet BIT-nek rövidítik, és egyszerűen bitnek írják. Az 10010011 számban minden egyes vagy nulla egy bit. A négy bitből álló csoportot nibble-nek nevezzük. A nyolc bitből álló csoportot bájtnak nevezzük. Egy bájt két nibble-ből áll. Az alsó nibble az LSB nibble, a magasabb nibble pedig az MSB nibble.



A 8 bites, 16 bites, 32 bites vagy 64 bites csoportot szónak nevezzük, mindaddig, amíg ez a csoport nem csupán egy számot jelöl. A csoportot szónak nevezzük, ha például egy alacsony szintű utasításról van szó a számítógépben. Létezik egy 24 bites szó is, de ezt ma már nem szokták használni.





Az endianness arra a sorrendre utal, amelyben a bájtok szót alkotnak. Tekintsük a 24 bites szót – 100100001111010100100010. Ez a szó három bájtból áll, amelyek a következők:

10010000 11110101 00100010



A legjelentősebb bájt a bal oldali legnagyobb bájt. Ha a bal szélső bájt a legjelentősebb bájt, a jobb szélső bájt pedig a legkevésbé jelentős bájt, akkor ezt a szó Big Endian reprezentációjának nevezik. A Little Endian ábrázolás ennek az ellenkezője.

A számítógép memóriája cellák sorozata, és minden cella egy bájtot tartalmaz. A számítógép memóriájában az első cella a 0., a második az 1., a harmadik a 2. bájt és így tovább. Nagy végpontossággal és az előző szónál a legjelentősebb bájt a 0. bájt cellában, a középső bájt az 1. bájt cellában, a legkisebb jelentőségű bájt pedig a 2. bájt cellában van tárolva. Ez azt jelenti, hogy az alsó memóriacellában több jelentős bájt van.

Az előző 24 bites szó a byte-ok fordított sorrendjében írható a következőképpen:

00100010 11110101 10010000

Most a legkevésbé jelentős bájt a szélső bal oldalon, a legjelentősebb bájt pedig a szélső jobb oldalon található. Ha a bal szélső bájt a legkisebb jelentőségű bájt, és a jobb szélső bájt a legjelentősebb bájt, akkor ez a szó Little Endian reprezentációja. Kis végpontossággal és az előző szó esetében a legkisebb jelentőségű bájt a 0. bájt cellában, a középső bájt az 1. bájt cellában, a legjelentősebb bájt pedig a 2. bájt cellában van tárolva. Ez azt jelenti, hogy kevesebb jelentős bájt van az alsó memóriacellában.

Az endianness nem használatos egy bájt bitjére. Egy bájtban történő nibble-ekhez sem használják. Csak bájtsorrendhez használják.

A számsor
Az előjel nélküli szám pozitív szám. A pozitív számok a nullától felfelé haladó számok. Negatív számok is léteznek. Pozitív és negatív számok is bemutathatók egy számegyenesen. A következő számsor a nullához közeli pozitív és negatív egész számokat (egész számokat) mutatja:

A negatív számok nulláról lefelé (balra) csökkennek. Sok esetben a nullát pozitívnak tekintik. Bizonyos helyzetekben azonban negatívnak tekintik. Ezért van a diagramon az alsó számozásban a nulla előtt plusz és mínusz jel. Ha egy szám pozitív, az előjele elhagyható; ez a helyzet a diagram felső számozásánál. A negatív szám előtti mínuszjel soha nem kerül kihagyásra.

3.2 Bináris számok összeadása

Ezen felül:

A + B = S

A-t augendnek, B-t összeadásnak, S-t összegnek nevezzük.

Tekintsük két pozitív szám következő összeadását a második bázisban:

A második bázisban az egyetlen lehetséges számjegy a 0 és az 1. Az összeadás a 2. bázisban hasonló a tízes bázishoz, de a második bázisban szereplő kettő egy-nulla (10). Ha egy oszlop két bitjének összege 10, a 0-t írjuk, és az 1-et a közvetlenül bal oldali oszlopba visszük; hozzá kell adni az ott lévő két bit összegéhez. Ha a teljes összeg három, az 11-et jelent a kettes alapban. A jobb oldali 1 a 11-ben íródik, a bal oldali 1 pedig a közvetlenül bal oldali oszlopbitek összegéhez kerül hozzáadásra. Mindkét esetben a balra vitt 1-et hordozásnak nevezzük.

Az előző összeadási táblázatot jobbról olvasva a második oszlopban (jobbról) egy 1+1 = 10-ből eredő átvitel található. A harmadik oszlopban egy 1+1+ átvitelből adódik. 1 = 11. A negyedik oszlopban van egy átvitel, amely az 1 = 10 0+1+ átviteléből adódik. Az ötödik oszlopban nincs átvitel, mert az összegzése 0+0+ carry 1 = 1. a többi oszlop nem jár szállítással.

Az oszlopszámlálás a jobb végétől kezdődik. 16 bites hozzáadással a nyolcadik oszlopból a kilencedik oszlopba lehet átvitel (balra haladva). Az alábbi táblázat ezt szemlélteti:

Az aritmetikai és logikai műveletek a számítógép alaplapján található mikroprocesszorban zajlanak.

Egy 8 bites szószámítógépnél a hardver nem tud automatikusan átmenni a nyolcadik bitről a kilencedik bitre. Tehát két 16 bites csoport hozzáadásához egy ilyen számítógépen a hozzáadást kétszer kell elvégezni nyolc-nyolc bites páronként. A szállítást a szoftver mozgatja és hajtja végre (programozás).

Két szám hozzáadásához a számokat először át lehet alakítani a kettő komplementer formájára (lásd alább), mielőtt hozzáadná.

3.3 Kettős komplement és bináris számok kivonása

A számítógép alaplapján ott van a memória és ott a mikroprocesszor és egyéb áramkörök. A memória nyolc bites cellák sorozata. Egy bájt esetében minden bit egy cellába kerül. A mikroprocesszornak van néhány memória típusú helye. Ezeket a memória típusú helyeket regisztereknek nevezzük. Így a számítógépben a bájtcsoportok ideiglenesen a memóriában vagy a mikroprocesszor regisztereiben tárolhatók.

Ezen tárolók bármelyikében minden cella 1-et vagy 0-t vehet fel, semmi mást. Az életben vannak pozitív és negatív számok. A pozitív szám pluszjellel (+), a negatív szám pedig negatív előjellel (-) kezdődik. Ha az előjelet kihagyjuk, a szám pozitív számnak minősül.

A szám előjelének számítógépben való feltüntetésével kapcsolatos probléma megoldása érdekében az egész számokat tartományokban tároljuk. Az egész számok egész számok. Ha nyolc bitet használunk a lehetséges számok tartományának tárolására, akkor a bal szélső bitet használjuk előjelként. Ha a szám 0-val kezdődik, akkor a szám pozitív szám. Ha 1-gyel kezdődik, akkor a szám negatív szám. Ha tizenhat bitet használunk a lehetséges számok tartományának tárolására, akkor a bal szélső bitet használjuk előjelként. Ha a szám 0-val kezdődik, t a szám pozitív szám. Ha 1-gyel kezdődik, akkor a szám negatív szám. Az ebben a formában lévő számokat előjeles számoknak nevezzük.

A gyakorlatban 8 bites, 16 bites, 32 bites és 64 bites előjeles számok létezhetnek. Minél szélesebb a bitek száma, annál nagyobb a tárolható számok tartománya.

Kettes egész számok
Kettős komplementer esetén a pozitív számok a normál számláló számok, kivéve, hogy a bal szélső számjegy 0. Ha egy adott pozitív számhoz meg szeretné kapni a megfelelő negatív számot, fordítsa meg a szám minden bitjét, és adjon hozzá 1-et az eredményhez. A 0 invertálása vagy komplementere 1. 1 invertője vagy komplementere 0. A következő táblázatok néhány kettő komplementszámát mutatják be tartományukban:

3.31. táblázat
Kettes egész számok két bitben
Bináris Decimális
01 +1
00 +0
tizenegy -1
10 -2

A pozitív bináris számok 00 és 01 (azaz nulla és egy). A bal szélső bitben a nulla azt mutatja, hogy ezek pozitív számok. 00 valamivel a tartomány közepén van. Ahhoz, hogy -1-et kapjunk, a 01 szám invertáltja 10. Ha ehhez (jobb szélen) hozzáadunk 1-et, akkor 11-et kapunk.

Mivel két bitet használunk, csak egy bit marad a számok reprezentálására abban a tartományban, amely a 01, 00 és 11 számoknak megfelelő +1, +0 és -1 számokból áll. Az első bit az előjelet jelzi. Előfordul, hogy a +2 10 nincs e három bináris szám között. A 10 1-gyel kezdődik, ami azt jelenti, hogy negatív számnak kell lennie a kettő komplementerében. Tehát a 10 benne van a tartományban, ami -2-t jelent.

Két bittel a kettő komplementerében az összes ábrázolható egész szám (pozitív és negatív) 2 2 = 4 és nem 2 2 -1 = 3. Az árnyalat az utolsó negatív szám felvételéből adódik, amely a 2 negatívja számmal – 1. Ebben az esetben -2 2-1 = -2 1 = -2. Nincs +2 a kettős komplementszámok tartományában 2 bitben.

3.32. táblázat
Kettes egész számok négy bitben
Bináris Decimális
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

A pozitív bináris számok 0000 és 0111 között vannak (azaz nullától hétig). A bal szélső bitben a nulla azt mutatja, hogy ezek pozitív számok. 0000 valamivel a tartomány közepén van. Ahhoz, hogy -1-et kapjunk, a 0001 szám invertáltja 1110. Ha ehhez hozzáadunk 1-et (jobb szélen), akkor 1111-et kapunk. A -2 megszerzéséhez a 0010 invertált értéke 1101. Ha ehhez hozzáadunk 1-et ( a jobb szélső oldalról) 1110-et ad. A többi negatív bináris szám, mint a -3-tól a -7-ig hasonló módon határozható meg.

Mivel négy bitet használunk, három bit marad a tartományban lévő számok jelölésére: +7, +6, +5, +4, +3, +2, +1, +0, -1, -2, - 3, -4, -5, -6 és -7, amelyek megfelelnek a 0111, 0110, 0101, 0100, 0011, 0010, 0001, 0000, 1111, 1110, 1101, 1100, 1011, 1, 1010 és 1010 számoknak.

Az 1000-nek megfelelő -8-at külön kell kezelni. Az összes szám első bitje pozitív számok esetén 0, negatív számok 1 előjelét jelzi. Előfordul, hogy 1000 nincs e tizennégy bináris szám között. Az 1000 1-gyel kezdődik, ami azt jelenti, hogy negatív számnak kell lennie, ami a kettő komplementerét illeti. Tehát 1000 benne van a tartományban, ami -8-at jelent.

Négy bittel a kettős komplementerben az összes ábrázolható egész szám (pozitív és negatív) 2 4 = 16 és nem 2 4 – 1 = 15. Az árnyalat az utolsó negatív szám beépítéséből adódik, amely a 2 negatívja számWidth – 1. Ebben az esetben -2 4 -1 = -2 3 = -8. A számok tartományában nincs +8.

A két komplementer két, négy és szélesebb bitjére vonatkozó korábbi elemzés alkalmazható 8 bites, 16 bites, 32 bites és 64 bites szélességű bináris számokra.

A kettes komplementer feláldozza az első (bal szélső) bitet a 0 előjeléért pozitív szám esetén, és az 1-et negatív szám esetén. Az „n” bit széles bitcsoporthoz 2 van n összesen pozitív plusz negatív számok. 2 lenne n -1, ha nem lenne benne a szerencsés utolsó (legkisebb) negatív szám. A legmagasabb pozitív szám +2 n-1 -1, a legkisebb negatív szám pedig -2 n-1 -1. -2 lenne n-1 -1, ha nem lenne szerencsés -2 n-1 beleértve.

Számok kivonása kettős komplementben
Kivonásban:

A-B = D

Az A-t a minuendnek, a B-t részlegesnek, a D-t pedig a különbségnek nevezzük.

Ha egy pozitív bináris számot ki akarunk vonni egy másik pozitív bináris számból, a minuendet kettes komplementerben írjuk, és a részösszeget a negatív kettős komplementer értékére konvertáljuk. Tehát a matematikai állítás a következő lesz:

A+ – B = D

Más szavakkal, a kettős komplementer kivonása során a részösszeg negatív számmá alakul, majd hozzáadódik a minuendhez.

3.31. példa:
Értékelje ki a következő decimális kifejezést kettős komplementerben négy bit használatával:

6-4

Megoldás:
A 6-os bináris száma 110. A 4 bites kettes komplementerben 0110. A bináris szám +4 esetén 100. A 4 bites kettős komplementerben 0100. 0100, amelyet kettőnél negatív 4-re kell konvertálni. komplementer a következőképpen: A 0100 komplementere vagy inverziója 1011. Ha ehhez hozzáadunk 1-et a jobb végről, mint ahogyan ezt is tettük, akkor 1100-at kapunk. Tehát a decimális kifejezés:

6-4, amely a következőképpen alakul:

0110 – 0100 ami van

0110 +(– 0100) = 0110 + 1100 az előző hozzáadási részben leírtak szerint:

Megjegyzés: A 0110 +(– 0100) ugyanaz, mint a 6 + – 4

A kettős komplemens kivonása esetén az utolsó oszlop után balra, az összeadásban minden átvitelt kidobunk. A tizedes számmal történő kivonásnál a matematikai állítás a következő:

6-4 = 2

Ha ugyanezt a kettős komplementerben megtesszük, a válasz 0010, ami +2 a kettős komplementer bináris számlálásában. Az előző kivonás kisebb számot von ki egy nagyobb számból. A következő példában egy nagyobb számot kivonunk egy kisebb számból. A 3.32 táblázatból megtudhatja, hogy a 0010 valóban kettős komplementer-e, ami egyenértékű a +2-vel.

3.32. példa:
Értékelje a következő decimális kifejezést kettős komplementerben négy bittel:

4-6

Megoldás:
A 4 bites bináris száma 100. A 4 bites kettes komplementerben ez 0100. A +6 bináris száma 110. A 4 bites kettős komplementerben ez 0110. A 0110-et negatív 6-ra kell konvertálni a kettős komplementerben. a következőképpen: A 0110 komplementere vagy inverziója 1001. Ha ehhez a jobb végről 1-et adunk, mint az előző összeadásnál, akkor 1010-et kapunk. Tehát a decimális kifejezés:

4-6, amely a következőképpen alakul:

0100 – 0110, ami

0100 +(– 0110) = 0100 + 1010 az előző hozzáadási részben leírtak szerint:

Megjegyzés: A 4+ – 6 ugyanaz, mint a 0100 +(– 0110).

A kettős komplemens kivonása esetén az utolsó oszlop után balra, az összeadásban minden átvitelt kidobunk. A tizedes számmal történő kivonásnál a matematikai állítás a következő:

4 – 6 = -2

Ugyanezt a kettős komplementerben végrehajtva a válasz 1110, ami -2 a kettős komplementer bináris számlálásában. A 3.32 táblázatból megtudhatja, hogy az 1110 valóban kettős komplementer-e, ami egyenértékű -2-vel.

3.4 Bináris számok szorzása

A nyilatkozatban:

A x B = P

A-t szorzónak, B-t szorzónak, P-t szorzónak nevezzük. Az A x B kifejezés azt jelenti, hogy A, B hányszor összeadjuk, ha A és B egész számok (egész számok).

A bináris szorzás ugyanaz, mint a decimális szorzás. De ahelyett, hogy decimálisan tenné, binárisan történik. A 42 x 10 decimális kifejezés szorzása binárisan történik a következőképpen, ahol 42 10 = 101010 2 és 10 10 = 1010 2 :

A hozzáadott 4 számot részterméknek nevezzük. A válasz a termék. A résztermékek hozzáadása a korábban ismertetett módon történik.

A szorzás a következőképpen is megtekinthető: Ebben az alap kétszorzásban, ha a szorzóban lévő bit (számjegy) 1, akkor annak részszorzatának legkisebb jelentőségű bitje a szorzószám legkisebb jelentőségű bitje, amelyet közvetlenül alatta újraírunk; és a szorzó többi bitje balra ismétlődik. Ebben az alap kétszorzásban, ha a szorzóban lévő bit (számjegy) 0, akkor a részszorzata 0-kból áll, közvetlenül alatta pedig a legkisebb jelentőségű 0. Az összes nulla száma a szorzóban lévő bitek száma.

3.5 Bináris számok felosztása

A nyilatkozatban:

A ÷ B = Q

A-t osztaléknak, B-t osztónak, P-t hányadosnak nevezzük. A hányadost maradék kísérheti. Az A ÷ B kifejezés azt jelenti, hogy B hányszor adható hozzá, hogy A-t kapjunk, vagy hogy közel legyen ahhoz, hogy a maradék 0 vagy kisebb legyen, mint B.

A felosztást sokféleképpen lehet megtenni. Az itt látható felosztás a helyreállítási felosztás.

Osztály helyreállítása
Ez a hosszú osztás módszere, amelyet az iskolákban tanulnak. Ha a 237-et elosztjuk 6-tal, a válasz 39 maradék 3. A 237 10 a 2. alapban 11101101 2 és 6 10 a 2. alapban 110 2 . A 39 10 a 2. alapban 100111 2 és 3 10 a 2. alapban a 11 2 .

Szóval, 11101101 2 osztva 110-el 2 100111-et ad 2 maradék 11 2 a kettes alapban. A helyreállítási módszerrel a bináris számok közönséges számok, és nem feltétlenül kettes komplementerben vannak. A következő szerkezet az 11101101-et osztja fel 2 110-re 2 100111-et adni 2 maradék 11 2 :

A kivonás rendesen történik, nem pedig a kettő komplementerének használatával. Mivel ez a kettes alap, egy kölcsön kettő és nem tíz. A részleges osztalék 10, 101, 1011, 1010 és 1001. A 11 a maradék. Mivel az osztó háromjegyű, az osztás alapvetően az adott osztalékból háromjegyű csoportokban történik. A hányados az egész szám (egész szám), és ennek a feladatnak az értéke 100111. A hányados és a maradék eredmény a vártnak megfelelő.

3.6 Aritmetikai műveletek szoftverrel és hardverrel

A számítógép alaplapján óra van. Az óra ketyegeit impulzusoknak nevezzük. Minden órajel impulzusnál egy vagy több döntés születik az alaplap különböző helyein; és ez a programozáshoz (szoftverhez) kapcsolódik.

A mikroprocesszoron belül kétféle áramkör található: kombinált logikai áramkörök és szekvenciális logikai áramkörök. Van egy másik típusú áramkör, az úgynevezett multiplexer. Az összeadás, szorzás és osztás egy órajelen belül történhet a kombinációs logika (áramkör) segítségével. Míg a programozás (szoftver) minden órajel impulzusnál döntést hoz a szekvenciális logikai áramkörök és multiplexerek segítségével.

Ha a kivonás kettős komplementer használatával történik, legalább két órajel impulzusra van szükség. Az első órajel impulzusnál a multiplexer a részösszeget a NEM kapuk halmazára csatornázza (számjegyenként egy NEM kapu). A második órajel impulzusnál a kombinációs logika 1-et ad a NOT kapuk kimenetéhez, és továbbra is hozzáadja a kapott részösszeget és minuendet. Mindez egy órajelen belül megtörténhet.

Az összeadás, szorzás és osztás továbbra is elmaradhat az igazságtáblázatokat használó programozással. Ez az online karriertanfolyam azonban nem foglalkozik vele.

3.7 Logikai műveletek a mikroprocesszorban

ÉS, VAGY, XOR és Invert

ÉS
A következő táblázat a bitenkénti ÉS-t szemlélteti. Ez azt jelenti, hogy két különböző bináris szám esetén a megfelelő bitek ÉS-re vannak osztva az AND Truth táblázat alapján:

Balról jobbra haladva 1 ÉS 1 = 1; 0 ÉS 1 = 0; 0 ÉS 0 = 0; 1 ÉS 0 = 0; és így tovább az ÉS igazságtáblázattal összhangban.

VAGY
A következő táblázat a bitenkénti VAGY-ot mutatja be. Ez azt jelenti, hogy két különböző bináris szám esetén a megfelelő bitek VAGY-re vannak rendelve az OR Truth táblázat alapján:

Balról jobbra haladva 1 VAGY 1 = 1; 0 VAGY 1 = 1; 0 VAGY 0 = 0; 1 VAGY 0 = 1; és így tovább a VAGY igazságtáblázattal összhangban.

INGYENES
A következő táblázat szemlélteti a bitenkénti kizárólagos VAGY-ot. Ez azt jelenti, hogy két különböző bináris szám esetén a megfelelő biteket az XOR igazságtáblázat alapján XOR-re osztják:

Balról jobbra haladva 1 XOR 1 = 0; 0 XOR 1 = 1; 0 XOR 0 = 0; 1 XOR 0 = 1; és így tovább az XOR igazságtáblázatának megfelelően.

Invert (NEM)
A következő táblázat a bitenkénti NEM (invert) értékét mutatja be. Ez azt jelenti, hogy egy bináris szám esetében ezúttal minden bit megfordításra kerül a NOT Truth Table alapján:

balról jobbra haladva NEM 1 = 0; NEM 0 = 1; NEM 0 = 1; NEM 1 = 0; és így tovább a NOT Truth Table szerint.

Váltás jobbra vagy balra

Váltás jobbra
A következő bináris szám 3 bitpozícióval jobbra van tolva, a nullákat pedig a bal oldali megüresedett bitpozíciókba szúrjuk be:

A váltás történhet egy, kettő, három, négy stb. helyre.

Váltás balra
A következő bináris szám 3 bitpozícióval balra van tolva, a nullákat pedig a jobb oldali megüresedett bitpozíciókba szúrjuk be:

A váltás történhet egy, kettő, három, négy stb. helyre.

Forgatás jobbra vagy balra

A forgatás hasonló a váltáshoz. Egyenként történik. Jobbra forgáskor a jobb végét elhagyó bitek nem esnek le, mint a váltásnál; egyenként cserélik ki a bal oldalon megüresedett biteket. Balra forgatáskor a bal végét elhagyó bitek nem esnek le, mint az eltolásnál; egyenként cserélik ki a jobb oldalon megüresedett biteket.

Forgasd jobbra
A következő bináris szám 3 bittel jobbra van elforgatva:

A forgatás történhet egy, kettő, három, négy stb. helyre.

Rorate Balra
A következő bináris szám 3 bittel balra van elforgatva:

A forgatás történhet egy, kettő, három, négy stb. helyre.

3.8 ASCII karakterkészlet és kódértékei

Az ASCII az „American (U.S.A) Standard Code for Information Interchange” rövidítése. Képzeljen el egy 96 billentyűs billentyűzetet. Ez egy ideális billentyűzet, ahol a nagybetűs billentyűk eltérnek a kisbetűs billentyűktől. Minden más billentyű egy angol (USA) billentyűzeten található karaktert jelöl. A karakterek és kódok (a karaktereknek megfelelő számok) a következőkben vannak felsorolva:

Ebben a táblázatban az első 32 karakter (beleértve a 00-as karaktert is 16 = 0 10 kód) nem nyomtatható karakterek. Ezek vezérlő karakterek. Nem láthatók a képernyőn (monitoron), ahol minden egyenlő. Csak hatásuk van. Beszéljünk erről bővebben később.

A többi karakter nyomtatási karakter; láthatók a képernyőn. 128 ASCII karaktert tartalmaz. 2 7 = 128. 1,111,111 2 = 127 10 . A 7 a 2-ben 7 7 bitet jelent.

Most 1111111 2 + 1 2 ugyanaz mint:

Itt 10 000 000 2 = 128 10 . 128 van 10 karaktereket az előző ASCII-karakterlistában (táblázatban). Ez magában foglalja a null karaktert, amelynek kódja a tizenhatodos bázisban (hexadecimális) 00, ami 00-nak felel meg a tízes bázisban.

Mivel összesen 128 karakter van, 128 mínusz 32 nem nyomtatható karakter 96 nyomtatási karaktert ad. Ebben a részben azt feltételezzük, hogy létezik egy ideális billentyűzet 96 karakterrel, amelyek nyomtatható karakterek. Ezen az ideális billentyűzeten a nagybetűs angol karakterek billentyűi eltérnek a kisbetűs angol karakterek billentyűitől.

A billentyűzeten minden karaktert két alapszámú 7 bit képvisel, amelyek nem szerepelnek a listában. Az „N” nagybetűt például a 2-es bázis hét 1001110 bitje képviseli. Az 1001110 konvertálásához 2 a 16-os alapra írja be a 0-t, és csoportosítsa az eredményt négy bites alcsoportokba az alábbiak szerint:

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

Ez a 01001110 2 = 4E 16 . A 4E konvertálásához 16 a tíz alaphoz tegye a következőket:

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

A listában (táblázatban) az „N” jobb oldalán található a 4E hexadecimális és a 78 decimális szám.

Egy másik példa, a „[“ karaktert a hét 1011011 bit képviseli a 2. bázisban. Az 1011011 konvertálásához 2 a 16-os alapra írja be a 0-t, és csoportosítsa az eredményt négy bites alcsoportokba az alábbiak szerint:

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

Ez a 01011011 2 = 5B 16 . Az 5B16 tízes alapra való konvertálásához tegye a következőket:

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

A listában (táblázatban) a „[“ jobb oldalán található az 5B hexadecimális száma és a 91 decimális száma.

Egy másik példa, hogy az „5” decimális szám karakterét a 2-es bázisban szereplő hét bit 0110101 jelenti, és nem 0000101 a 2-es alapban. A 0110101 konvertálásához 2 a 16-os alapra írja be a 0-t, és csoportosítsa az eredményt négy bites alcsoportokba az alábbiak szerint:

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

Ez a 00110101 2 = 35 16 . Ha a 3516-ot tízes alapra szeretné konvertálni, tegye a következőket:

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

A listában (táblázatban) az „5” jobb oldalán a 35 hexadecimális és az 53 decimális szám található.

Mivel a számítógép bájtokban működik, az ideális billentyűzet egy billentyűjének lenyomásakor nyolc bit kerül a mikroprocesszorra (alaplapra). Az ideális billentyűzet egy periféria, amely el van választva a számítógép rendszer- (alap) egységétől. Van egy elektronikus áramköre (IC), amely létrehozza a hét bitet, és egy nullával megelőzi, mielőtt a kábelén keresztül a rendszeregység alaplapjára küldi. Az alaplap bemeneti portjáról (bemeneti áramkör) a szintén az alaplapon lévő mikroprocesszorhoz megy. A mikroprocesszorból a memóriába kerül, ami szintén az alaplapra van felszerelve.

Tehát az ideális billentyűzet „N” gombjának megnyomásakor nyolc 01001110 bit kerül a mikroprocesszorba. A mikroprocesszorból a memóriába kerülnek, ahol bájtként egy memóriahelyen maradnak. A programozónak szem előtt kell tartania, hogy a 01001110 nyolc bitje 2 megegyezik a 4E-vel 16 ami megegyezik a 78-assal 10 .

Az ideális billentyűzet „[“ gombjának megnyomásakor nyolc 01011011 bit kerül a mikroprocesszorba. A mikroprocesszorból a memóriába kerülnek, ahol bájtként egy memóriahelyen maradnak. A programozónak szem előtt kell tartania, hogy a 01011011 nyolc bitje 2 megegyezik az 5B-vel 16 ami ugyanaz, mint a 91 10 .

Ha az ideális billentyűzeten az „5” billentyűt lenyomjuk, karakterként, és nem decimális számként, nyolc bit 00110101 kerül a mikroprocesszorba. A mikroprocesszorból a memóriába kerülnek, ahol bájtként egy memóriahelyen maradnak. A programozónak szem előtt kell tartania, hogy a 00110101 nyolc bitje 2 ugyanaz, mint a 35 16 ami megegyezik az 5310-el 10 .

Vannak esetek, amikor egy program fut, és arra vár, hogy a tizedes 5-ös szám kerüljön a számítógépbe. Ebben a helyzetben, ha megnyomja az „5” gombot az ideális billentyűzeten, akkor is a 00110101 nyolcbites kód kerül a mikroprocesszorba. Mivel az 5-ös decimális számra van szükség, nem az „5” karakterre, a memóriából származó kódrészlet (rövid program) a mikroprocesszor segítségével konvertálja a második bázis 00110101 karakterkódját a kettő 00000101 komplementszámává. 2 mielőtt két komplementer bájtként elküldi egy memóriahelyre. A programozónak szem előtt kell tartania, hogy a 00000101 5-öt jelent 10 a 2. alapban, és eltér a 00110101 kódszámoktól 2 , 35 16 és 53 10 ami az „5” karakterét jelenti. A kettő 00000101 komplementszámának a memóriában való megjelenítéséhez egy másik rövid programnak a 00000101-et a memóriából 00110101-re kell konvertálnia. Ez a 00110101, ami megegyezik a 35-tel. 16 ami megegyezik az 53-assal 10 amely megjelenik a monitoron (vagy a nyomtató papírra nyomtatja).

3.9 Lebegőpontos számformátum

A tizedes rész nélküli szám egész szám. A 36 egy egész szám. A 36,375 nem egész szám. Ez egy decimális szám tizedes résszel. A 0,375 tizedes része 1-nél kisebb tört.

A 36.375 decimális formában a következőképpen értelmezhető:

Most:

Szóval 100100 2 = 3610, ami a 36,375 egész szám része 10 .

Most:

Tehát 0,011 2 = 0,375 10 amely a 36.375 decimális szám része 10 .

∴ 36 375 10 = 100100,011 2

Fogalmazd meg másképp:

100100.011 2 = 36 375 10

A számok a számítógépben a 2. bázisban vannak ábrázolva, és nem a 10. bázisban, minden egyenlő. Mivel a mikroprocesszor regiszterében vagy a memóriában lévő cellában csak 1 vagy 0 lehet, nincs hely a tizedesvessző tárolására. Ez problémát jelent. Felbontásként létezik az IEEE-754 szimpla pontosságú 32 bites lebegőpontos ábrázolás és az IEEE-754 kettős pontosságú 64 bites lebegőpontos ábrázolás.

32 bites lebegőpontos számformátum
Az 100100.0112 szám a következőképpen fejezhető ki:

100100.011 2 = 1,00100011 2 x 2 +5

A = szimbólum jobb oldalára a matematika az 100100.011 bal oldalának két alapformájaként hivatkozik. 2 .

Most 00100011/1,00100011 2 a = szimbólum jobb oldalán, az azt megelőző „1” nélkül. az alap 2 nélkül pedig explicit szignifikansnak nevezzük. Ebben az esetben a bináris pont öt hellyel balra kerül, hogy az „1” legyen. Ne keverje össze a tizedesvesszőt és a bináris pontot. A bináris pont a 2-es, míg a tizedespont a 10-es bázist jelenti. Az „1”. Ezt követi a 00100011 a = szimbólum jobb oldalán, az alap 2 nélkül, az igazi szignifikanst. Az 1,00100011-et azonban implicit szignifikansnak nevezzük.

A szignifikáns után a jobb oldalon az „x 2 +5 ' kifejezés. Ezzel a kifejezéssel a +5-öt kitevőnek nevezzük. A pluszjel azt jelenti, hogy a bináris pontot öt hellyel előre kell mozgatni, hogy a normál eredeti helyére kerüljön, és a 2 a számozás alapja. Az előző egyenlet fordítva is felírható:

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

A 32 bites lebegőpontos ábrázolással ez „1.00100011 2 x 2 +5 ', amelyet használnak, és nem csak az '100100.011 2 ”. Az alap 2-je nem kerül rögzítésre. A 32 bites lebegőpontos ábrázolás az „1.00100011 2 x 2 +5 ” szám, amely egyenlő 36,375-tel 10 = 100100,011 2 , az alábbi táblázatban látható:

Vannak 32 bites pozíciók, amelyek a jobb végétől számítva vannak 0-tól kezdve. A bal oldalon lévő első bit az előjelbit. Ha a szám pozitív, ez a bit 0. Ha a szám negatív, akkor ez a bit 1 (-1 két karakterből áll, és nem helyezhető egyetlen cellába sem). Az 1.00100011 2 x 2 +5 ami egyenlő 36.375-tel 10 ami szintén egyenlő 100100.011 2 egy pozitív szám. Tehát az első bit 0.

Nyolc bitpozíció van a kitevő számára, a 30. pozíciótól a 23. pozícióig, beleértve. Az odaírt kitevő azonban 10000100 2 ami egyenlő 132-vel 10 . Az érdeklődés számának kitevője valójában a kettő alapjának +5-e. Szóval, mi történik?

Most a 32 bites formátumban a 0 kitevője 01111111 2 ami egyenlő 127-tel 10 . A +5 10 +101 2 . Tehát 10000100-hoz érkezve 2 a táblázat kitevőjében, 101 2 hozzá lett adva a 01111111 számhoz 2 , ennek megfelelően. Ez azt jelenti, hogy 5-öt hozzáadtunk 127-hez, így 132 lett 10 .

A szignifikáns az „1.” nélkül a 22-es pozíciókat 15-re vette, beleértve. Vegye figyelembe, hogy az „1”-ből az 1. nincs feltüntetve a 32 bites karakterláncban. Soha nincs feltüntetve – fogadja el. A többi cella a 0 pozícióig nullákkal van kitöltve.

Ha a tényleges kitevő -5, akkor az 5-öt kivonjuk 127-ből 10 hogy legyen 122 10 . Ez 101 kivonásának felel meg 2 01111111 számról 2 hogy 01111010 legyen 2 .

Az összes előző ábrán a +1 szám, amely 1,0 x 2 0 = 1,0 x 1 = 1,0 a következőképpen jelenik meg:

Vegye figyelembe, hogy az „1. 1,0 x 2 0 nincs feltüntetve a formátumban. Soha nincs feltüntetve. A következő vegyes tört, amely 1,0 után pozitív lesz:

Figyeld meg az 1-est a jobb oldalon. Ez az ábrázolás a szám:

Az 1.0000001192092896 és az 1.0 közötti különbség a következő:

1,0000001192092896 – 1,0 = 0,0000001192092896

A tizedes részeket tartalmazó számok vegyes törtek. Nem minden tört 1 között 10 és 2 10 ábrázolható a számítógépben. Feltételezhető, hogy a 32 bites lebegőpontos formátummal az egymást követő vegyes számok közötti legkisebb törtrés 0,0000001192092896. Várja meg, hogy a dupla pontosság intervalluma kisebb legyen. Lásd az alábbi ábrát.

A számot jelentő 0.0 nem követi az előző argumentumokat. A 0.0 reprezentációja deklarálva van, és ekként kell megtanulni. A 0,0 ábrázolásához a szignifikancia összes cellája 0, és a kitevő összes cellája is nulla. Az előjelbit lehet 0 vagy 1. Sajnos ez pozitív 0-t és negatív 0-t eredményez az alábbiak szerint:

A való életben csak egy nulla van. Pozitív 0 és negatív 0 nem létezik. A 0-t azonban általában pozitívnak tekintik. Pozitív 0 és negatív 0 létezik itt az adott formátumleírás miatt. A számegyenesben (lásd fent) lehet +0 és -0 is, de csak egy nulla létezik.

64 bites lebegőpontos számformátum
A 64 bites lebegőpontos formátum hasonló a 32 biteshez, de a következő különbségekkel:

  • 64 bitből áll egy szám.
  • Az előjelbit után 11 bit áll a kitevő számhoz.
  • A nulla index kitevője (2 0 ) az 1023 10 = 01111111111 2 .
  • A tizenegy bitet 52 bit követi az explicit szignifikancia érdekében.
  • Szélesebb számtartománnyal rendelkezik, mint a 32 bites formátum.

Vegye figyelembe, hogy az „1. azaz a szignifikancia elején található és még mindig nem szerepel a 64 bites között, ahogy a 32 bites formátum 32 bitje között sem.

Az egyik legfontosabb különbség a 64 bites formátum és a 32 bites formátum között, hogy a 64 bites formátumban az egymást követő vegyes törtek közötti különbség kisebb, mint a 32 bites formátumban.

A 64 bites formátumban az 1,0 és a következő vegyes tört közötti intervallum (rés) a következőképpen számítható ki:

1.0 az

0 01111111111 00000000000000000000 00000000000 0000000000000000000000 2

Ez egyenértékű a karakterláncban nem feltüntetett „1.”-vel, megszorozva 2-vel a 0 hatványra (index) emelve (a kitevő 1023 10 = 01111111111 2 2-ért 0 = 1). A karakterlánc 1,0 x 2 méretű 0 .

A következő 1,0-nál nagyobb vegyes tört:

0 01111111111 00000000000000000000 00000000000 0000000000000000000001 2

Ez egyenértékű az 1-gyel. ami nincs feltüntetve a karakterláncban, ezt követi 51 nulla, majd 1, megszorozva 2-vel 0 hatványra emelve (a kitevő 1023 10 = 011111111112 2 2-ért 0 = 1). Ez ugyanaz, mint:

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

A ≈ azt jelenti, hogy megközelítőleg egyenlő.

Most:

1,0000000000000002 – 1,0 ≈ 0,00000000000000002

A 32 bites formátum megfelelő intervallumértéke 0,0000001192092896 ≈ 0,00000012.

A 0,0000000000000002 sokkal kisebb, mint a 0,00000012. Tehát sokkal több kevert tört van két egymást követő egész szám között (például 3 és 4) a 64 bites formátumban, mint két egymást követő egész szám között a 32 bites formátumban.

A számegyenesen két egymást követő egész szám közötti vegyes törtek száma végtelen. Tehát egyetlen formátum (például 32 bites vagy 64 bites) sem tudja megadni az összes kevert törtet bármely két egymást követő egész szám (egész szám) között. Minél kisebb a rés (intervallum) két egymást követő egész szám között, amelyet egy formátum (például 32 bites vagy 64 bites) biztosít, annál nagyobb az egymást követő egész számok közötti kevert törtek száma (a számegyenes esetében).

Az okok, amiért a 64 bites formátumot dupla vagy nagyobb pontosságúnak írják le a 32 bites formátumhoz képest, az az oka, hogy a 64 bites formátumban két egymást követő vegyes tört közötti intervallum, amelyet két egymást követő egész szám határol, kisebb, mint a megfelelő 32 -bites formátum intervallum. Ezenkívül a 64 bites formátumban több lehetséges kevert tört van két korlátos egész között, mint a 32 bites formátumban.

A tizedes szám tizedes részének (történek) konvertálása bináris részre
A 36,375 egy decimális szám, amelynek decimális része „.375”. A „.375” tizedes része nulla és egy közötti tört. A tízes bázis 0,5 értéke megegyezik a második bázis 1/2-ével. A 0,5 10 amit a két bázis kiterjesztéssel fejezünk ki:

Nem 0,101 2 ami 0,625-öt jelent 10 . A decimális szám tizedes részének megvan a megfelelő bináris része a megfelelő bináris számnak. Tehát egy decimális szám, például 36,375 konvertálásához 10 a kettő alaphoz alakítsa át a 36-ot binárissá, majd a 0,375-öt szintén binárissá. Ezután kösse össze mindkét eredményt a bináris ponttal. A két szakasz átalakításának módja eltérő. A decimális egész szám 2-es alapra való konvertálását az 1. fejezet ismerteti.

A tizedes tört bináris törtté alakításához kövesse az alábbi lépéseket:

  • Szorozzuk meg a tizedes törtet (tizedes részt) 2-vel. Az ebből kapott egész szám az első bináris számjegy.
  • Ismételje meg az előző lépést a tört decimális eredménnyel, hogy megkapja a következő bináris számjegyet.
  • Ismételje meg az előző lépést, amíg a tizedes tört eredmény 0,0000— lesz.

Példa: Alakítsa át a 36,375 tört részét 10 a második bázis egyenértékű törtrészére.

Megoldás:

Vegye figyelembe, hogy a harmadik lépésben 0,500-at szoroztunk 2-vel, és nem 1,500-zal. A megfelelő bináris tört felülről az utolsó oszlopban olvasható. És így a következő eredmény:

.375 10 = .011 2

A bináris szám bináris részének (történek) átalakítása decimális részre
Ennek eléréséhez bontsa ki a bináris törtet a 2 reciprok hatványaiban.

Példa: Alakítsa át az 100100.011 tört részét 2 a tízes bázis egyenértékű törtrészére.

Megoldás:

3.10 Számelőtagok a számítástechnikában

Normál életben 1 kiló 1000-et jelent, amit k-val (kisbetűvel) rövidítünk, mint az 1 kg-ot. A számítástechnikában 1 kiló 2-t jelent 10 = 1024, de K betűvel (nagybetűvel) rövidítve, mint 1Kbitben. Normál életben az 1 mega 1 000 000-et jelent, amelyet M-rel (nagybetűvel) rövidítenek, mint 1 mg-ot. A számítástechnikában 1 mega 2-t jelent húsz = 1 048 576 = 2 10 x 2 10 = 1024 x 1024 = 1 048 576, és továbbra is M-ben (nagybetűvel) van rövidítve, mint 1 Mbit-ben. Normál életben 1 giga azt jelenti, hogy 1 000 000 000 G-vel (nagybetűvel) rövidítve, mint 1 Gg-ban. A számítástechnikában 1 giga 2-t jelent 30 = 1 073 741 824 = 2 10 x 2 10 x 2 10 = 1024 x 1024 x 1024 = 1 073 741 824, és továbbra is G-vel (nagybetűvel) van rövidítve, mint az 1 Gbitben. Az alábbi táblázat négy előtag jelentését adja meg a normál életben és a számítástechnikában:

3.11 Problémák

Javasoljuk, hogy az olvasó az összes problémát egy fejezetben oldja meg, mielőtt a következő fejezetre lépne.

  1. Rajzoljon egy számegyenest -10 és +10 közötti egész számokkal.
  2. Adja hozzá a következő bináris számokat a 8 bites kettes komplementerhez: 101010 2 és 1111 2 .
  3. Csak a kettő komplementer megközelítését használja 8 bitben az 1111 bináris szám kivonásához 2 az 101010 bináris számból 2 .
  4. Keresse meg az 10110 termékét 2 x 1101 2 a kettes alapban.
  5. Oszt 36 375 10 1000-re 10 decimális és bináris formában, és hasonlítsa össze az eredményeket.
  6. Használja a választott 8 bitet a logikai ÉS, VAGY, XOR, Invertálás, Jobbra eltolás, Balra eltolás, Forgatás jobbra és Balra forgatás illusztrálására. Minden bájtnak 1-nek és 0-nak kell lennie.
  7. a) Írja le a nulla ASCII karakter numerikus kódját hexadecimális, bináris és decimális formában!
    b) Írja be az „1” ASCII-karakter numerikus kódját hexadecimálisan, binárisan és decimálisan.
    c) Írja be az „A” ASCII karakter numerikus kódját hexadecimális, bináris és decimális formában.
    d) Írja be az „a” ASCII karakter numerikus kódját hexadecimális, bináris és decimális formában.
  8. Átalakítás 49,49 10 a kettes alapba. Konvertálja az eredményt IEEE 32 bites lebegőpontos formátumba.
  9. a) Miben különbözik az IEEE 64 bites lebegőpontos formátuma a 32 bitestől?
    b) Adja meg a két kapcsolódó okot, hogy miért írják le a 64 bites formátumot dupla vagy nagyobb pontosságúnak, mint a
    32 bites formátum.