Blabla1: Rozdiel medzi revíziami
Zo stránky SensorWiki
Riadok 122: | Riadok 122: | ||
Medzi základné celočíselné aritmetické operácie, ktoré realizuje ALU, patria | Medzi základné celočíselné aritmetické operácie, ktoré realizuje ALU, patria: | ||
* súčet | |||
* rozdiel | |||
* násobenie | |||
* delenie | |||
Všetky tieto operácie sú binárne. | Všetky tieto operácie sú binárne. | ||
Riadok 132: | Riadok 132: | ||
=== Celočíselný súčet === | === Celočíselný súčet === | ||
Ak interpretujeme binárny obsah slova, ako zobrazenie dekadického čísla v pozičnej číselnej sústave so základom 2, ide o zobrazenie celých nezáporných čísel, t.j. celých čísel bez znamienka ( sú to celé čísla typu unsigned). | |||
'''Súčet celých čísel bez znamienka''' | |||
Pre súčet binárnych čísel platia pravidlá binárnej aritmetiky pre jednobitové slová | |||
kde okrem výsledného bitu, treba uvažovať signalizáciu prenosu do vyššieho rádu. | |||
V prípade súčtu dvoch 8-bitových slov bude | |||
v ďalšom príklade | |||
V tomto prípade pošlo k požiadavke na prenos do vyššieho rádu, po skončení sčítania. ALU obsahujú stavové slovo, ktorého jeden bit (Carry Bit) slúži na zapisovanie tejto informácie. Po vykonaní súčtu vieme, pamäťové miesto nestačí svojou veľkosťou na zápis výsledku sčítania. | |||
* pri viacslovnom sčítaní musíme uvažovať hodnotu tohoto bitu pri sčitaní slov vyšších rádov | |||
* v prípade súčtu celých čísel bez znamienka platí, že zároveň signalizuje tzv. pretečenie (overflow) ( neplatí všeobecne, že carry bit signalizuje pretečenie). Pretečenie znamená, že výsledok operácie nie je zobraziteľný ( to, čo je vo výsledku nie je správny výsledok operácie). | |||
Na realizáciu sčítania sa v ALU používajú sčítačky realizované pomocou logických obvodov. Pri sčítaní na najnižšom ráde platí ( sčítanie nultého rádu) sa používa polovičná sčítačka. | |||
Popis polovičnej sčítačky pomocou aritmetických operácií | |||
a logických operácií | |||
Polovičná sčítačka sa dá realizovať pomocou kombinačných obvodov | |||
Tri možné spôsoby realizácie polovičnej sčítačky. | |||
Pri sčítaní na ďalších rádoch treba uvažovať prenosy s predchádzajúcich rádov | |||
Možné realizácie úplnej sčítačky : | |||
použitím polovičnej sčítačky : | |||
Na sčítanie dvoch n-bitových čísel sa dajú použiť paralelná alebo sériová sčítačka, pričom sa vo všetkých stupňoch používa úplná sčítačka ( realizácia prenosu z predchádzajúceho sčítania, realizácia inkrementácie nastavením carry bitu a pričítaním nuly) | |||
Paralelná sčítačka | |||
Sériová sčítačka | |||
Rozdiel čísel bez znamienka | |||
Pre odčítanie binárnych čísel platia pravidlá binárnej aritmetiky pre jednobitové slová | |||
kde okrem výsledného bitu, treba uvažovať signalizáciu výpožičky z vyššieho rádu (borrow). | |||
V prípade odčítania dvoch 8-bitových slov bude | |||
V druhom prípade je po vykonaní operácie nastavený príznak podtečenia | |||
- v prípade viacbajtového odčítania je potrebné tento príznak uvažovať | |||
- inak výsledok je nesprávny – výsledok nie je zobraziteľný | |||
Hardvérovo sa dá odčítačka realizovať, ale na inom princípe, nie realizáciou pravidiel pre odčítanie. | |||
Zobrazenie záporných celých čísel | |||
Možné reprezentácie celých záporných čísel | |||
* Priamy kód | |||
Bit s najväčšou váhou MSB – znamienkový bit, n-1 bitov absolútna hodnota čísla | |||
MSB = 0 kladné číslo | |||
MSB = 1 záporné číslo číslo | |||
Napr. | |||
- rozsah zobraziteľných čísel je symetrický <-(2n-1 –1), 2n-1 –1> | |||
- pri aritmetických operáciách treba vyhodnocovať znamienka | |||
- nejednoznačná nula | |||
* Inverzný kód (1´st complement) | |||
Bit s najväčšou váhou MSB – znamienkový bit | |||
MSB = 0 kladné číslo | |||
MSB = 1 záporné číslo číslo | |||
Číslo s opačným znamienkom sa vytvára inverziou bit po bite | |||
- rozsah zobraziteľných čísel je symetrický <-(2n-1 –1)1, 2n-1 –1> | |||
- aritmetické operácie | |||
pri sčítaní treba korigovat výsledok pripočítaním obsahu carry bitu k LSB | |||
- nejednoznačná nula | |||
- kód pre n-bitové záporné číslo je vytvorený podľa vzťahu | |||
* Doplnkový kód (2´st complement) | |||
Bit s najväčšou váhou MSB – znamienkový bit, n-1 bitov absolútna hodnota čísla | |||
MSB = 0 kladné číslo | |||
MSB = 1 záporné číslo číslo | |||
Číslo s opačným znamienkom sa vytvára v dvoch krokoch | |||
- inverzia bit po bite | |||
- pripočítanie jednotky ( inkrementácia) | |||
Bit s najväčšou váhou MSB – znamienkový bit, n-1 bitov absolútna hodnota čísla | |||
MSB = 0 kladné číslo | |||
MSB = 1 záporné číslo číslo | |||
Napr. |
Verzia z 10:32, 25. február 2009
Základné aritmeticko-logické operácie
Elementárne aritmeticko-logické operácie
Logické operácie sa uskutočňujú nad pamäťovými miestami obyčajne s registrami CPU, pričom operácia sa vykonávajú so všetkými dvojicami bitov (bitmi) pamäťových miest. Pamäťové miesta (slová) môžu byť jedno a viacbajtové. Bity v tychto slovách označujeme indexom, ktorého počiatočná hodnota je 0 a index narastá zprava doľava :
Označovanie bitov v 8-bitovom slove (v jednobajtovom slove)
Označovanie bitov v 16-bitovom slove (v dvojbajtovom slove)
LSB – Least Significant Bit ( bit s najmenšou váhou) MSB – Most Significant Bit ( bit s najväčšou váhou)
Operácie delíme ich na - unárne – vykonávajú sa s jedným pamäťovým miestom - binárne– vykonávajú sa s dvoma pamäťovými miestami Medzi elementárne operácie, ktoré vykonávajú takmer všetky CPU sú :
- Negácia (NOT)
Patrí medzi unárne operácie: Pravidlá pre jednobitové operandy sú: Pre viacbitové ( budeme uvádzať príklady pre 8-bitové operandy ( jeden bajt)
- logický súčet (OR)
Patrí medzi binárne operácie: Pravidlá pre jednobitové operandy sú:
Pre jednobajtové operandy:
Použitie: Vnútenie logickej jednotky do ľubovolnej pozície v byte, v bytoch tzv. maskou. Napr.: Vykonaním logického súčtu ľubovolného bytu s maskou, ktorá je reprezentovaná bytom s obsahom
bude v uvedenom byte v bitoch s indexom 7,6 a 2 vždy logická jednotka bez ohľadu na predchádzajúci obsah bytu.
kde X je obsah bitu pred vykonaním operácie.
- logický súčin (AND)
Patrí medzi binárne operácie. Pravidlá pre jednobitové operandy sú:
Pre jednobajtové operandy:
Použitie: Vnútenie logickej nuly do ľubovolnej pozície v byte, v bytoch tzv. maskou. Napr.: Vykonaním logického súčtu ľubovolného bytu s maskou, ktorá je reprezentovaná bytom s obsahom
bude v uvedenom byte v bitoch s indexom 7,6 a 2 vždy logická nula bez ohľadu na predchádzajúci obsah bytu.
Pomocou masky môžeme testovať logickú hodnotu vybraného bitu, bitov, bajtu a bajtov. Použitím, napríklad, masky
po vykonaní logického súčinu s vybraným bajtom, bude výsledok operácie nulový, ak v bite s indexom 2 bola logická nula, a naopak nenulový, ako v danom bite bola logická jednotka. Nulový výsledok znamená, že bajt (bajty), do ktorých sa zapíše výsledok aritmeticko-logickej operácie obsahuje vo všetkých bitoch binárnu hodnotu nula.
- neekvivalencia (XOR)
Patrí medzi binárne operácie. Nazýva sa tiež exluzívny súčet, súčet modulo 2, EOR. Pravidlá pre jednobitové operandy sú:
Pre jednobajtové operandy:
Použitie: Inverovanie logickej hodnoty v ľubovolnej pozícii bajtu ( bajtoch) maskou. Napríklad. Vykonaním logického súčtu ľubovolného bytu s maskou, ktorá je reprezentovaná bytom s obsahom
bude výsledok operácie
Posuny a rotácie
Medzi najzákladnejšie operácie ALU patria posuny a rotácie obsahov pamäťových miest. Patria medzi unárne operátory. Operácie sa vykonávajú posúvaním obsahov bitov doľava, alebo doprava, prípadne n-tica pamäťových bitov sa doplní formálne o pomocný bit na (n+1) –ticu ( pomocným bitom bývajú príznakové (stavové) bity CPU, napr. Carry bit)
Rotácie Rotácia obsahu pamäťového miesta doprava
Rotácia obsahu pamäťového miesta doľava
Posuny obsahu pamaťového miesta môžu byť:
- logické
- aritmetické
Logické posuny Logický posun obsahu pamäťového miesta doprava
Logický posun obsahu pamäťového miesta doľava
Aritmetické posuny Aritmetický posun obsahu pamäťového miesta doprava
ale pre bajt
Aritmetický posun obsahu pamäťového miesta doľava
ale pre bajt
Použitie :
- cyklické testovanie obsahu bitov
- vytváranie slov pri kódovaní
- arimetické posuny
- doprava
-je celočíselným delením číslom 2
- pri n posunoch ide o celočíselné delenie číslom 2n
- doľava
- je násobením číslom 2
- pri n posunoch ide o násobenie číslom 2n
Celočíselná arimetika
Medzi základné celočíselné aritmetické operácie, ktoré realizuje ALU, patria:
- súčet
- rozdiel
- násobenie
- delenie
Všetky tieto operácie sú binárne.
Celočíselný súčet
Ak interpretujeme binárny obsah slova, ako zobrazenie dekadického čísla v pozičnej číselnej sústave so základom 2, ide o zobrazenie celých nezáporných čísel, t.j. celých čísel bez znamienka ( sú to celé čísla typu unsigned).
Súčet celých čísel bez znamienka
Pre súčet binárnych čísel platia pravidlá binárnej aritmetiky pre jednobitové slová
kde okrem výsledného bitu, treba uvažovať signalizáciu prenosu do vyššieho rádu.
V prípade súčtu dvoch 8-bitových slov bude
v ďalšom príklade
V tomto prípade pošlo k požiadavke na prenos do vyššieho rádu, po skončení sčítania. ALU obsahujú stavové slovo, ktorého jeden bit (Carry Bit) slúži na zapisovanie tejto informácie. Po vykonaní súčtu vieme, pamäťové miesto nestačí svojou veľkosťou na zápis výsledku sčítania.
- pri viacslovnom sčítaní musíme uvažovať hodnotu tohoto bitu pri sčitaní slov vyšších rádov
- v prípade súčtu celých čísel bez znamienka platí, že zároveň signalizuje tzv. pretečenie (overflow) ( neplatí všeobecne, že carry bit signalizuje pretečenie). Pretečenie znamená, že výsledok operácie nie je zobraziteľný ( to, čo je vo výsledku nie je správny výsledok operácie).
Na realizáciu sčítania sa v ALU používajú sčítačky realizované pomocou logických obvodov. Pri sčítaní na najnižšom ráde platí ( sčítanie nultého rádu) sa používa polovičná sčítačka. Popis polovičnej sčítačky pomocou aritmetických operácií
a logických operácií
Polovičná sčítačka sa dá realizovať pomocou kombinačných obvodov
Tri možné spôsoby realizácie polovičnej sčítačky.
Pri sčítaní na ďalších rádoch treba uvažovať prenosy s predchádzajúcich rádov
Možné realizácie úplnej sčítačky :
použitím polovičnej sčítačky :
Na sčítanie dvoch n-bitových čísel sa dajú použiť paralelná alebo sériová sčítačka, pričom sa vo všetkých stupňoch používa úplná sčítačka ( realizácia prenosu z predchádzajúceho sčítania, realizácia inkrementácie nastavením carry bitu a pričítaním nuly)
Paralelná sčítačka
Sériová sčítačka
Rozdiel čísel bez znamienka
Pre odčítanie binárnych čísel platia pravidlá binárnej aritmetiky pre jednobitové slová
kde okrem výsledného bitu, treba uvažovať signalizáciu výpožičky z vyššieho rádu (borrow).
V prípade odčítania dvoch 8-bitových slov bude
V druhom prípade je po vykonaní operácie nastavený príznak podtečenia - v prípade viacbajtového odčítania je potrebné tento príznak uvažovať - inak výsledok je nesprávny – výsledok nie je zobraziteľný
Hardvérovo sa dá odčítačka realizovať, ale na inom princípe, nie realizáciou pravidiel pre odčítanie.
Zobrazenie záporných celých čísel
Možné reprezentácie celých záporných čísel
- Priamy kód
Bit s najväčšou váhou MSB – znamienkový bit, n-1 bitov absolútna hodnota čísla MSB = 0 kladné číslo MSB = 1 záporné číslo číslo Napr.
- rozsah zobraziteľných čísel je symetrický <-(2n-1 –1), 2n-1 –1> - pri aritmetických operáciách treba vyhodnocovať znamienka - nejednoznačná nula
- Inverzný kód (1´st complement)
Bit s najväčšou váhou MSB – znamienkový bit MSB = 0 kladné číslo MSB = 1 záporné číslo číslo
Číslo s opačným znamienkom sa vytvára inverziou bit po bite
- rozsah zobraziteľných čísel je symetrický <-(2n-1 –1)1, 2n-1 –1> - aritmetické operácie
pri sčítaní treba korigovat výsledok pripočítaním obsahu carry bitu k LSB
- nejednoznačná nula
- kód pre n-bitové záporné číslo je vytvorený podľa vzťahu
- Doplnkový kód (2´st complement)
Bit s najväčšou váhou MSB – znamienkový bit, n-1 bitov absolútna hodnota čísla MSB = 0 kladné číslo MSB = 1 záporné číslo číslo Číslo s opačným znamienkom sa vytvára v dvoch krokoch - inverzia bit po bite - pripočítanie jednotky ( inkrementácia)
Bit s najväčšou váhou MSB – znamienkový bit, n-1 bitov absolútna hodnota čísla MSB = 0 kladné číslo MSB = 1 záporné číslo číslo Napr.