Wartość dwójkowej liczby stałoprzecinkowej Wartość dziesiętna stałoprzecinkowej liczby binarnej Arytmetyka liczb binarnych b n-1...b 1 b 0,b -1 b -2...b -m = b n-1 2 n-1 +... + b 1 2 1 + b 0 2 0 + b -1 2-1 + b -2 2-2 +... + b -m 2 -m gdzie: b - bit, cyfra dwójkowa 0 lub 1 n - liczba bitów całkowitych m - liczba bitów ułamkowych Przykład: Obliczyć wartość stałoprzecinkowej liczby dwójkowej 110101,111011 (2). Sposób pierwszy Obliczamy wartość części całkowitej sumując wagi pozycji zawierających cyfrę 1: 110101 (2) = 32 + 16 + 4 + 1 = 53 (10) Identycznie obliczamy wartość części ułamkowej: 0,111011 (2) = 1 / 2 + 1 / 4 + 1 / 8 + 1 / 32 + 1 / 64 0,111011 (2) = 32 / 64 + 16 / 64 + 8 / 64 + 2 / 64 + 1 / 64 0,111011 (2) = 59 / 64 Łączymy obie części w całość otrzymując wynik: 110101,111011 (2) = 53 59 / 64 Sposób drugi Wartość części całkowitej obliczamy jak powyżej. Część ułamkową traktujemy chwilowo jak liczbę całkowitą, obliczamy jej wartość i wynik mnożymy przez wagę ostatniej pozycji liczby wejściowej: 111011 (2) = 32 + 16 + 8 + 2 + 1 = 59 Waga ostatniej pozycji wynosi 1 / 64, zatem 0,111011 (2) = 59 1 / 64 = 59 / 64 Łączymy część całkowitą z częścią ułamkową i otrzymujemy: 110101,111011 (2) = 53 59 / 64 Dodawanie liczb binarnych W dodawaniu liczb binarnych należy pamiętać o takich zasadach, że: 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 i 1 zapisujemy w pamięci, przenosimy o jedną pozycje dalej (5) 10 +(6) 10 =(11) 10 (5) 10 =(101) 2 (6) 10 =(110) 2 1
Czyść (59) 10 =(0111011) 2 (72) 10 =(1001000) 2 (59) 10 +(72) 10 =(131) 10 Oblicz: 11001 2 + 1000 2 =. 10101010 2 + 1011011 2 =.. 101011 2 + 11011 2 =. 111100 2 + 10010 2 = 1101011 2 + 101100 2 = 11001 2 + 111 2 =.. 11111 2 + 100 2 = 1010101 2 + 10101 2 = Odejmowanie liczb binarnych Odejmowanie liczb binarnych wykonuje się poprzez zamianę jednej z liczb na ujemną. A zatem odejmowanie jest niczym innym jak dodawaniem ujemnych liczb binarnych. Skoro tak, to trzeba wiedzieć jak zapisywać liczby binarne dodatnie w postaci ujemnej. Zapis Uzupełnienie do 2 U2 Przepisujemy bity od prawej strony do pierwszej jedynki (włącznie), a kolejne bity przepisujemy na odwrót (z zaprzeczeniem). 10110100 2 = 01001100 U2 101101 2 = 010011 U2 Liczby binarne można zapisać w postaci ujemnej na dwa sposoby. Zapis Uzupełnienie do 1 U1 Wszystkie bity przepisujemy z zaprzeczeniem. Uzupełnienie do 1 liczby binarnej jest zawsze negacją bitów tej liczby. 10110100 2 = 01001011 U1 101101 2 = 010010 U1 Czy liczby ujemne będą zapisane na U1 czy na U2 to stanowi kwestią umowną. Należy z góry zdefiniować jaki jest stosowany zapis dla ujemnych. W przypadku działań na liczbach ujemnych ostatni bit, czyli bit znajdujący się po lewej stronie, to bit znaku informuje nas czy liczba jest w ogóle ujemna czy nie. Jeżeli jest zero, np. 01111 to znaczy że liczba jest dodatnia ale jeżeli jest "jedynka", np. 10011 to znaczy ze mamy do czynienia z liczbą ujemną w zapisie takim jaki został wyznaczony. 2
Schemat dodawania w przypadku zapisu U1 Dodawanie dwóch liczb binarnych w przypadku, gdy liczby ujemne są reprezentowane w zapisie U1, wykonywane jest przez dodanie tych liczb wraz z bitami znaku. Gdy istnieje przeniesienie z najbardziej znaczącej pozycji, to wynik zostaje zwiększony o jeden, czyli przeniesienie dodajemy do najmniej znaczącej pozycji. Jeżeli wynik dodawania jest dodatni to otrzymana liczba jest liczbą binarną. Jeżeli wynik jest ujemny to należy wykonać na nim jeszcze raz zapis U1, pozostawiając bit znaku bez zmian, i wtedy wynik przyjmie postać binarną. Schemat dodawania w przypadku zapisu U2 Dodawanie dwóch liczb binarnych ze znakiem w przypadku, gdy liczba ujemna zapisana jest jako U2, wykonywane jest przez dodanie tych liczb łącznie z bitem znaku. Przeniesienie na najbardziej znaczącej pozycji zostaje odrzucone. Jeżeli wynik dodawania jest dodatni to otrzymana liczba jest liczbą binarną. Jeżeli wynik dodawania jest ujemny to na otrzymanej liczbie należy wykonać jeszcze raz zapis U2 pozostawiając oczywiście bit znaku bez zmian. Oblicz stosując zapis U1 3 5 = -4 + 3 = 2 1 = -3 + 7 = 5 6 = Działania wykonaj na 4 bitach. Oblicz stosując zapis U2 5 4 = -3 2 = 5 4 = 3 7 = -7 + 6 = Działania wykonaj na 4 bitach. 3
Mnożenie liczb binarnych 0 * 0 = 0 0 * 1 = 0 1 * 0 = 0 1 * 1 = 1 Obie liczby umieszczamy jedna pod drugą tak, aby ich cyfry znalazły się w kolumnach o tych samych wagach: 1101 1011 Każdą cyfrę mnożnej mnożymy przez poszczególne cyfry mnożnika zapisując wyniki mnożeń w odpowiednich kolumnach - tak samo postępujemy w systemie dziesiętnym, a tutaj jest nawet prościej, gdyż wynik mnożenia cyfry przez cyfrę jest zawsze jednocyfrowy: 1 0 1 1 0 0 0 0 Puste kolumny uzupełniamy zerami i dodajemy do siebie wszystkie cyfry w kolumnach. Uważamy na przeniesienia. 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 1 0 0 0 1 1 1 1 Oblicz: 101 * 111 = 1011 * 101 = 111 * 111 = 11 * 1101 = 11011 * 1011 = Podstawowe operacje logiczne Jeśli cyfry 0 i 1 potraktujemy tak, jak wartości logiczne fałsz i prawda, to działanie elementów dwustanowych opisują operacje dwuelementowej algebry Boole a. Algebrę Boole a definiują: dwuelementowy zbiór {0, 1} oraz trzy operacje: alternatywa (OR), koniunkcja (AND) i negacja (NOT) wraz ze zbiorem aksjomatów i twierdzeń. Zmienne należące do zbioru {0, 1} oraz ww. operacje nazywamy zmiennymi i operacjami logicznymi. Układy realizujące funkcje logiczne nazywamy funktorami logicznymi (powszechnie używa się też określenia: bramki logiczne) 4
NEGACJA (ang. NOT, pol. NIE, mat. ~) Jest to zamiana wartości cyfry na przeciwną (tzn. 0 na 1 i 1 na 0). ~ 0 = 1 ~ 1 = 0 Działanie podstawowych operacji logicznych często przedstawia się w postaci układów elektrycznych zawierających żarówki i wyłączniki. Przyjmując, że wyłącznik zwarty i świecąca się żarówka reprezentują jedynkę, a wyłącznik rozwarty i zgaszona żarówka reprezentują zero, działanie negacji realizuje układ: Negacja jest operacją jednoargumentową. Symbol graficzny funktora realizującego negację: Negacja jest najprostszym działaniem logicznym. Wynikiem jest liczba przeciwna do wyjściowej. Działanie funktora NOT Suma logiczna (ang. OR, pol. LUB, mat. ) Suma logiczna dwu cyfr binarnych jest równa 0 wtedy i tylko wtedy, gdy obydwie cyfry są równe 0 0 0 = 0 0 1 = 1 1 0 = 1 1 1 = 1 Sumę logiczną realizuje przedstawiony niżej układ: Symbol graficzny funktora OR: Przykłady działania funktora OR: Iloczyn logiczny (ang. AND, pol. I, mat. ) Iloczyn logiczny dwu cyfr binarnych jest równy 1 wtedy i tylko wtedy, gdy obydwie cyfry są równe 1 0 0 = 0 0 1 = 0 1 0 = 0 1 1 = 1 Iloczyn logiczny realizuje przedstawiony niżej układ: Symbol graficzny funktora AND: Przykłady działania funktora AND: 5
Funktory NAND i NOR NAND NOT AND Symbol graficzny funktora NAND NOR NOT OR Symbol graficzny funktora NOR Alternatywa wykluczająca (ang. XOR, pol. ALBO, mat. ) Inaczej: różnica symetryczna, suma modulo 2 XOR exclusive OR Alternatywa wykluczająca dwu cyfr binarnych jest równa 0 wtedy i tylko wtedy, gdy obydwie cyfry są jednakowe. 0 0 = 0 0 1 = 1 1 0 = 1 1 1 = 0 Symbol graficzny funktora XOR: Podstawowe operacje logiczne dla liczb binarnych W operacjach logicznych liczba binarna jest traktowana jako zbiór pojedynczych cyfr. Cyfrowe układy arytmetyczne Odpowiednie połączenie funktorów logicznych pozwala wykonywać operacje arytmetyczne. Reguły dodawania dwu cyfr binarnych w formie tabelki (v1, v2 dodawane cyfry, s ich suma, c przeniesienie) Urządzenie wykonujące dodawanie dwu cyfr binarnych zgodnie z ww. tabelką nazywa się półsumatorem Półsumator dodaje dwie cyfry dwójkowe (v1, v2), podając ich sumę (s) i przeniesienie (c). 6
Przykład półsumatora zbudowanego z pięciu funktorów NAND oraz sprawdzenie jego działania dla wszystkich możliwych wariantów danych wejściowych: Prawa DeMorgana Przy przekształcaniu wyrażeń logicznych korzysta się często z dwóch prostych praw zwanych prawami DeMorgana. Ich zapis słowny brzmi następująco: Negacja alternatywy jest równa koniunkcji negacji: NOT(a OR b) = (NOT a) AND (NOT b). Negacja koniunkcji jest równa alternatywie negacji: NOT(a AND b) = (NOT a) OR (NOT b). Prawa De Morgana udowadniamy za pomocą tabelek, w których konstruujemy wyniki wyrażenia po lewej i po prawej stronie równości i sprawdzamy, czy otrzymaliśmy to samo. Jeśli tak, to prawo zostaje udowodnione: 7
8