• Nie Znaleziono Wyników

Przekroczenie zakresu

N/A
N/A
Protected

Academic year: 2021

Share "Przekroczenie zakresu"

Copied!
24
0
0

Pełen tekst

(1)

Naturalny kod binarny (NKB)

pozycja 7 6 5 4 3 2 1 0

warto´s´c 27 26 25 24 23 22 21 20

warto´s´c 128 64 32 16 8 4 2 1

bity b7 b6 b5 b4 b3 b2 b1 b0

• System pozycyjny o podstawie systemu 2

• Liczby okre´slone s ˛a bez znaku

• Warto´s´c liczby binarnej (N- długo´s´c słowa kodowego) W artosc = PN−1

i=0 2i · bi

• Warto´s´c cyfry zale˙zy od pozycji bi = 2i (numerowanie od zera)

• 2N ró˙znych warto´sci kodu (kod pełny)

(2)

Sumowanie

7610 0 1 0 0 1 1 0 0

18810 + 0 1 1 1 0 1 1 0

19410 = 1 1 0 0 0 0 1 0

przeniesienie 0 1 1 1 1 1 0 0

• Sumowanie dwóch a, b bitów: ai, bi, ci si, ci+1 (c - przeniesienie, s - wynik sumowania)

(3)

Przekroczenie zakresu

15210 1 0 0 1 1 0 0 0

11810 + 0 1 1 1 0 1 1 0

1410 ? = 0 0 0 0 1 1 1 0

przeniesienie 1 1 1 1 0 0 0 0

• Przeniesienie z najstarszego bitu (cN−1 = 1) oznacza przekroczenie zakresu dla słowa N -bitowego,

• Alternatywnie: Wyst ˛apienie przeniesienia oznacza, ˙ze wynik jest jest N + 1- liczb ˛a bitow ˛a. Przeniesienie bitu nale˙zy wówczas traktowa´c N + 1 bit

wyniku.

(4)

je´sli bN−1 = 1 to liczna jest ujemna, gdy bN−1 = 0 dodatnia) np.:

2410 = 1 0 0 1 1 0 0 0

11810 = 0 1 1 1 0 1 1 0

1410 = 1 0 0 0 1 1 1 0

wrtosc = (−1)bN1 · PN−2

i=0 2i · bi

• Ze wzgl˛edu na najstarszy bit kod nie jest wagowy,

• zakres kodu < −(2N−1 1), 2N−1 1 >,

• 2N 1 kombinacji - zero posiadałoby dwie reprezentacje (kombinacja 10000000 (minus zero) jest zabroniona),

• Kłopotliwe sprawdzanie bitu znaku i wykonywanie operacji na modułach.

• Idea bitu znaku jest wykorzystywana w innych reprezentacjach (np. w eksponencie liczb zmiennoprzecinkowych)

(5)

kod uzupełnie ´n do 1 (U1) (ang. 1s complement)

• W zapisie tym najbardziej znacz ˛acy bit jest tak˙ze bitem znaku (0 – liczba dodatnia, 1 – liczba ujemna), ale w zale˙zno´sci od jego warto´sci dalsze bity zapisu maja ró˙zne znaczenie.

– Je´sli bit znaku jest 0 (liczba dodatnia), to dalsze bity reprezentuj ˛a liczby dodatnie w ZM.

– Natomiast gdy bit znaku jest 1 (liczba ujemna), to dalsze bity

reprezentuj ˛a moduł liczby ujemnej, w taki sposób, ˙ze zanegowane ich warto´sci odpowiadaj ˛a modułowi tej liczby w kodzie ZM.

• Zapis U1 dla liczb dodatnich jest taki sam jak zapis ZM.

• Ró˙znice w zapisie wyst˛epuj ˛a jedynie dla liczb ujemnych.

• Zakres liczb tego zapisu jest taki sam jak dla zapisu ZM.

(6)

Kod uzupełnie ´n do 1

• W zapisie U1 wyst˛epuj ˛a tak˙ze dwie reprezentacje zera: 000000...00 i 111111...11.

• Sposób przeliczenia liczby ujemnej w zapisie ZM na zapis U1:

Zanegowa´c bity oznaczaj ˛ace moduł liczby (bit znaku pozostaje 1).

Np. dla liczb 8-bitowych:

zapis ZM: 11010110 (dziesi˛etnie -86) zapis U1: 10101001

(7)

Kod uzupełnie ´n do 2

Najstarszy bit MSB ma warto´sc ujemn ˛a pozostałe bity s ˛a dodatnie tj.:

wartosc = −2N1 · bN

1 +

NX2 i=0

2i · bi

• Najstarszy bit identyfikuje czy liczba jest dodatnia czy ujemna.

• Zakres kodu: < −2N−1,2N−1 1 >,

• 2N kombinacji (kod pełny), zero ma tylko jedn ˛a reprezentacj˛e,

• Liczby dodatnie z przedziału < 0, 2N−1 1 > maj ˛a identyczn ˛a reprezentacje w U2 co w NKB tj.:

(0, bN−2, . . . , b1, b0)U 2 = PN−2

i=0 2i · bi

• kod wagowy, najstarszy bit na warto´s´c ujemn ˛a. Liczby ujemne mo˙zna interpretowa´c jako sum˛e:

(1, bN−2, . . . , b1, b0)U 2 = −2N−1 + PN−2

i=0 2i · bi

(8)

• wada kodu U 2: zakres kodu jest niesymetryczny, negacja liczby −2N−1 prowadzi do bł˛edu (np. dla N = 128 liczba −128 mie´sci si˛e w zakresie, ale 128 ju˙z nie).

• Przekroczenie zakresu przy sumowaniu, np. dla N = 8:

(127)U 2 + (4)U 2 = (−125)U 2 - bł ˛ad

• Inkrementacja liczby 127 daje wynik −128.

(9)

Negowanie liczb w kodzie U2

−(wartosc)U 2 = (wartosc)U 2 + 1

Aby obliczy´c liczb˛e przeciwn ˛a do danej w kodzie U2 nale˙zy zanegowa´c wszystkie bity i do wyniku doda´c jedynk˛e np.:

710 (00000111)

negacja bitów (11111000) doda´c bit + (00000001) wynik −7 = (11111001)U 2

(10)

• Dodawanie wykonywane jak w NKB, niezale˙znie od znaków argumentów

• Warto´s´c przeniesienia z sumowania najstarszego bitu jest ignorowana

• Przekroczenie zakresu (nadmiar) ⇐⇒ suma dwóch liczb dodatnich jest ujemna lub suma dwóch liczb ujemnych jest dodatnia

• Odejmowanie w U 2 - dodanie negacji odjemnika tj.:

a − b = a + (−b) - wystarcz ˛a operacje negowania i dodawania.

(11)

Odejmowanie w kodzie U2 - przykłady

25 + (−1) :

25 : 00011001

1 : + 11111111

(c7 = 1) : = 00011000U 2 = 2410 25 + (−56) :

25 : 00011001

56 : + 11001000

(c7 = 0) : = 11100001U 2 = −3110

(12)

25 + 1

25 : 00011001 +1 : + 00000001

(c7 = 0) : = 00011010U 2 = 2610 (−25) + (−56) :

25 : 11100111

56 : + 11001000

(c7 = 1) : = 10101111U 2 = −8110

(13)

Przekroczenie zakresu w kodzie U2 - przykłady

112 + 113 :

112 : 01110000 113 : + 01110001

(c7 = 0, c6 = 1) : = 11100001 - przepełnienie (−75) + (−56) :

75 : 10110101

56 : + 11001000

(c7 = 1, c6 = 0) : = 01111101 - przepełnienie

(14)

Sumowanie najstarszego bitu:

(15)

Kod BCD

Packed Binary Coded Decimal w dwóch tetrada przechowywane s ˛a dwie cyfry dziesi˛etne (0, . . . , 9)

warto´s´c 80 40 20 10 8 4 2 1

bity b7 b6 b5 b4 b3 b2 b1 b0

wartosc =

X7 i=0

104i · 2imod4 · bi

• np. 0011 1001 = 39H EX 3910

• Kod niepełny - 156 kombinacji zabronionych

• U˙zywany ze wzgl˛edu na prostot˛e konwersji liczb zapisanych dziesi˛etnie

(16)

Proste sumowanie binarne (mo˙zliwe trzy przypadki)

(17)

Dekodowanie w kodzie BDC

(18)

Reprezentacja liczb rzeczywistych

• Reprezentacja stałoprzecinkowa (ang. fixed point)

• Reprezentacja zmiennoprzecinkowa (ang. floating point)

(19)

Reprezentacja stałoprzecinkowa

W sposób arbitralny przyjmuje si˛e, ˙ze cz˛e´s´c słowa reprezentuje cz˛e´s´c całkowit ˛a, a pozostała cz˛e´s´c słowa cz˛e´s´c ułamkow ˛a np. dla słowa o´smiobitowego przyjmijmy cz˛e´s´c całkowit ˛a jako 5 bajtów a cz˛e´s´c ułamkow ˛a jako 3 bajty

pozycja: 7 6 5 4 3 2 1 0

warto´s´c: 24 23 22 21 20 21 22 23

warto´s´c: 16 8 4 2 1 12 14 18

bity: b7 b6 b5 b4 b3 b2 b1 b0

(20)

• w Interpretacji stałoprzecinkowej mo˙zna równie˙z przyj ˛a´c

interpretacj˛e U1, U 2, ZM (najstarszy bit b˛edzie miał znaczenie jak w tych kodowaniach)

• Kodowanie stałoprzecinkowe mo˙ze powodowa´c bł ˛ad,

• Dokładno´s´c kodowania zale˙zna jest od długo´sci słowa,

• Niektóre liczby całkowite i wymierne nie maj ˛a swojej dokładnej reprezantacji w sko´nczonym kodowaniu,

• Liczby niewymierne zawsze kodowane s ˛a z bł˛edem.

(21)

Reprezentacja zmiennoprzecikowa

Ogólnie: Liczba zmienna przecinkowa jest reprezentowana jako mantysa i wykładnik

mantysa wykładnik Przykład:

mantysa wykładnik dziesi˛etny: 2, 14 103 dwójkowy: 0, 10001 2010

(22)

Reprezentacja zmiennoprzecikowa - przykłady

• Wykładnik reprezentowany jest w kodzie ZM,

• Mantysa jest ułamkowa.

(23)

Zadania na ´cwiczenia

1. Zbuduj z bramek NAND sumator jednobitowy. Sprawd´z jego działanie.

2. Za pomoc ˛a sumatora czterobitowego przeprowad´z operacj˛e sumowania dwóch czterobitowych liczb dwójkowych bez

przepełnienia (wskazanych przez prowadz ˛acego). Wynik zinterpretuj w kodzie N KB i U2,

3. Wykonaj operacje sumowania dwóch czterobitowych liczb dodatnich generuj ˛acych przepełnienie (wskazanych przez prowadz ˛acego).

Wynik oraz przeprowadzone operacje zinterpretuj.

4. Wykonaj operacje sumowania dwóch czterobitowych liczb ujemnych generuj ˛acych przepełnienie (wskazanych przez prowadz ˛acego).

Wynik oraz przeprowadzone operacje zinterpretuj.

5. Zaprojektuj i sprawd´z działanie układu do identyfikacji

(24)

przepełnienia. Układ powinien równie˙z sprawdza´c, czy przepełnienie wyst ˛apiło wskutek sumowania dwóch liczb dodatnich czy dwóch

liczb ujemnych.

6. Zaproponuj reprezentacje ujemnych i dodatnich liczb rzeczywistych z cz˛e´sci ˛a ułamkow ˛a za pomoc ˛a 8-bitów. Okre´sl przedział liczbowy, który mo˙ze by´c reprezentowany oraz dokładno´s´c reprezentacji. Za pomoc ˛a sumatora 8-bitowego wykonaj sumowanie dwóch liczb rzeczywistych (dodatniej i ujemnej) wskazanych przez

prowadz ˛acego. Okre´sl bł ˛ad reprezentacji obu liczb oraz wyniku.

Wynik oraz przeprowadzone operacje zinterpretuj.

Cytaty

Powiązane dokumenty

Adresowany jest niejawnie przez rejestr segmentowy ​SS oraz wskaźnik wierzchołka stosu ​SP​.. Używany jest do przechowywania stanu procesora podczas wykonywania procedury

 zaznacz blok komórek G8:K12, wprowadź (w komórce G8) funkcję MACIERZ.ILOCZYN (A1:E5; A8:E12) i naciśnij kombinacje klawiszy [CTRL]+[SHIFT]+[ENTER]..  otrzymane wyniki

 zaznacz blok komórek A17:E21, wprowadź (w komórce A17 ) funkcję MACIERZ.ILOCZYN (G5:K9; A11:E15) i naciśnij kombinacje klawiszy [CONTROL]+[SHIFT]+[ENTER]..  otrzymane wyniki

Aby przenieść plik o nazwie przykład.doc z katalogu /usr/local/www do katalogu macierzystego bieżącego użytkownika i wyświetlić żądanie potwierdzenia w przypadku zastępowania

Nadmiar jest przekroczeniem górnej granicy zakresu liczb. Dla liczb naturalnych mamy do czynienia z nadmiarem, gdy pojawi się przeniesienie poza najstarszą pozycję liczby..

Następnie dokonywane jest grupowanie wierszy, wybranych w poprzednim kroku, względem listy kolumn, stojącej po klauzuli GROUP BY (musi ona występować w zapytaniu po klauzuli..

Następnie dokonywane jest grupowanie wierszy, wybranych w poprzednim kroku, względem listy kolumn, stojącej po klauzuli GROUP BY (musi ona występować w zapytaniu po klauzuli

W bazie danych MySQL można użyć dla jednej z kolumn tabeli, która musi być typu INT, modyfikatora AUTO_INCREMENT, powodującego automatyczne nadawanie kolejnych liczb