Zapis liczb binarnych ze znakiem



Podobne dokumenty
Pracownia Komputerowa wykład V

Pracownia Komputerowa wyk ad V

Wprowadzenie do informatyki - ć wiczenia

Kod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych.

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

Kod U2 Opracował: Andrzej Nowak

Wprowadzenie do informatyki - ć wiczenia

SYSTEMY LICZBOWE 275,538 =

SYSTEMY LICZBOWE. Zapis w systemie dziesiętnym

ARCHITEKRURA KOMPUTERÓW Kodowanie liczb ze znakiem

Pracownia Komputerowa wykład VI

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 2 WSTĘP DO INFORMATYKI

Podstawy Informatyki

Kod znak-moduł. Wartość liczby wynosi. Reprezentacja liczb w kodzie ZM w 8-bitowym formacie:

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

Pracownia Komputerowa wyk ad VI

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 5 Liczby w komputerze

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

Systemy zapisu liczb.

Naturalny kod binarny (NKB)

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.

Wprowadzenie do informatyki - ć wiczenia

Arytmetyka binarna - wykład 6

Arytmetyka liczb binarnych

Stan wysoki (H) i stan niski (L)

Pracownia Komputerowa wykład IV

Podstawy Informatyki

1.1. Pozycyjne systemy liczbowe

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

Metoda znak-moduł (ZM)

Wstęp do Informatyki

Kodowanie liczb całkowitych w systemach komputerowych

Liczby rzeczywiste są reprezentowane w komputerze przez liczby zmiennopozycyjne. Liczbę k można przedstawid w postaci:

Pracownia Komputerowa wyk ad IV

Zestaw 3. - Zapis liczb binarnych ze znakiem 1

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze

Wstęp do programowania. Reprezentacje liczb. Liczby naturalne, całkowite i rzeczywiste w układzie binarnym

Wstęp do informatyki- wykład 1 Systemy liczbowe

System liczbowy jest zbiorem reguł określających jednolity sposób zapisu i nazewnictwa liczb.

Arytmetyka stałopozycyjna

Technologie Informacyjne

L6.1 Systemy liczenia stosowane w informatyce

1259 (10) = 1 * * * * 100 = 1 * * * *1

Przedmiot: Urządzenia techniki komputerowej Nauczyciel: Mirosław Ruciński

Techniki multimedialne

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

Układy arytmetyczne. Joanna Ledzińska III rok EiT AGH 2011

12. Wprowadzenie Sygnały techniki cyfrowej Systemy liczbowe. Matematyka: Elektronika:

System Liczbowe. Szesnastkowy ( heksadecymalny)

PODSTAWY INFORMATYKI. Informatyka? - definicja

RODZAJE INFORMACJI. Informacje analogowe. Informacje cyfrowe. U(t) U(t) Umax. Umax. R=(0,Umax) nieskończony zbiór możliwych wartości. Umax.

Wielkości liczbowe. Wykład z Podstaw Informatyki. Piotr Mika

Reprezentacja stałoprzecinkowa. Reprezentacja zmiennoprzecinkowa zapis zmiennoprzecinkowy liczby rzeczywistej

Wstęp do informatyki. Pojęcie liczebności. Liczenie bez liczebników. Podstawy arytmetyki komputerowej. Cezary Bolek

Arytmetyka. Arytmetyka. Magdalena Lemańska. Magdalena Lemańska,

4 Standardy reprezentacji znaków. 5 Przechowywanie danych w pamięci. 6 Literatura

LICZBY ZMIENNOPRZECINKOWE

Wstęp do informatyki- wykład 2

DYDAKTYKA ZAGADNIENIA CYFROWE ZAGADNIENIA CYFROWE

1. Operacje logiczne A B A OR B

Wielkości liczbowe. Wykład z Podstaw Informatyki dla I roku BO. Piotr Mika

Informatyka kodowanie liczb. dr hab. inż. Mikołaj Morzy

Cyfrowy zapis informacji

SYSTEMY LICZBOWE. SYSTEMY POZYCYJNE: dziesiętny (arabski): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 rzymski: I, II, III, V, C, M

Sposób reprezentacji informacji w systemie. Reprezentacja informacji. Dzięki kodowaniu informacji.

Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego

Cyfrowy zapis informacji. 5 grudnia 2013 Wojciech Kucewicz 2

Wstęp do informatyki. Pojęcie liczebności. Zapis liczb. Liczenie bez liczebników. Podstawy arytmetyki komputerowej. Cezary Bolek

Kod IEEE754. IEEE754 (1985) - norma dotycząca zapisu binarnego liczb zmiennopozycyjnych (pojedynczej precyzji) Liczbę binarną o postaci

Dane, informacja, programy. Kodowanie danych, kompresja stratna i bezstratna

B.B. 2. Sumowanie rozpoczynamy od ostatniej kolumny. Sumujemy cyfry w kolumnie zgodnie z podaną tabelką zapisując wynik pod kreską:

MNOŻENIE W SYSTEMACH UZUPEŁNIENIOWYCH PEŁNYCH (algorytm uniwersalny)

Systemy liczenia. 333= 3*100+3*10+3*1

Architektura komputerów

BŁĘDY OBLICZEŃ NUMERYCZNYCH

Technologie Informacyjne Wykład 4

Met Me ody numer yczne Wykład ykład Dr inż. Mic hał ha Łan Łan zon Instyt Ins ut Elektr Elektr echn iki echn i Elektrot Elektr echn olo echn

Plan wyk ladu. Kodowanie informacji. Systemy addytywne. Definicja i klasyfikacja. Systemy liczbowe. prof. dr hab. inż.

Luty 2001 Algorytmy (7) 2000/2001

Metody numeryczne II. Reprezentacja liczb

Podstawy Informatyki. Wykład 2. Reprezentacja liczb w komputerze

Kodowanie informacji. Kody liczbowe

LISTA 1 ZADANIE 1 a) 41 x =5 podnosimy obustronnie do kwadratu i otrzymujemy: 41 x =5 x 5 x przechodzimy na system dziesiętny: 4x 1 1=25 4x =24

Wprowadzenie do informatyki ćwiczenia

Systemy liczbowe używane w technice komputerowej

Arytmetyka komputerów

Arytmetyka komputera

Adam Korzeniewski p Katedra Systemów Multimedialnych

Pracownia komputerowa. Dariusz Wardecki, wyk. V

Prefiksy binarne. kibibit (Kibit) mebibit (Mibit) gibibit (Gibit) tebibit (Tibit) pebibit (Pibit) exbibit (Eibit) zebibit (Zibit) yobibit (Yibit)

Teoretyczne Podstawy Informatyki

Wykład I: Kodowanie liczb w systemach binarnych. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

0 + 0 = 0, = 1, = 1, = 0.

Podstawą w systemie dwójkowym jest liczba 2 a w systemie dziesiętnym liczba 10.

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Adam Korzeniewski p Katedra Systemów Multimedialnych

Operacje arytmetyczne

Transkrypt:

Zapis liczb binarnych ze znakiem

W tej prezentacji: Zapis Znak-Moduł (ZM) Zapis uzupełnień do 1 (U1) Zapis uzupełnień do 2 (U2)

Zapis Znak-Moduł (ZM) Koncepcyjnie zapis znak - moduł (w skrócie ZM - ang. SM Signed Magnitude) jest najbardziej zbliżony do systemu zapisu liczb używanego przez nas samych. Liczba ZM składa się z dwóch części - bitu znaku oraz bitów wartości liczby (modułu): b n-1 b n-2 b n-3... b 2 b 1 b 0 b n-1 - bit znaku liczby b n-3... b 0 - bity modułu liczby Dla liczb dodatnich i zera bit znaku ma wartość 0, dla liczb ujemnych i zera ma wartość 1. Format zapisu ZM musi być ściśle ustalony, aby wiadomo było, który bit jest bitem znaku - w operacjach arytmetycznych bit znaku musimy traktować inaczej niż inne bity.

Wartość dziesiętna liczby w zapisie ZM Moduł liczby ZM jest zapisany w naturalnym kodzie dwójkowym NBC, zatem w celu obliczenia jej wartości moduł mnożymy przez 1, gdy bit znaku wynosi 0 lub przez -1, gdy bit znaku wynosi 1. Wzór jest następujący: L ZM = (-1) bit znaku x moduł liczby Rozpisując poszczególne bity otrzymujemy: b n-1 b n-2...b 2 b 1 b 0 = (-1)b n-1 (b n-2 2 n-2 +... + b 2 2 2 + b 1 2 1 + b 0 2 0 ) gdzie b - bit, cyfra dwójkowa 0 lub 1 n - liczba bitów w zapisie liczby

Przykład 1 Obliczyć wartość dziesiętną liczby 10110111 (ZM). Pierwszy bit zapisu ZM jest bitem znaku. Wartość 1 informuje nas, iż jest to liczba ujemna. Pozostałe bity tworzą wartość liczby. Moduł jest zapisany w naturalnym systemie dwójkowym, zatem: 10110111 (ZM) = (-1) 1 (2 5 + 2 4 + 2 2 + 2 1 + 2 0 ) 10110111 (ZM) = - (32 + 16 + 4 + 2 + 1) 10110111 (ZM) = - 55 (10)

Przykład 2 Obliczyć wartość dziesiętną liczby 00011111 (ZM). Bit znaku ma wartość 0, zatem jest to liczba dodatnia. Wartość tej liczby jest równa wartości jej modułu zapisanego w naturalnym kodzie dwójkowym. 00011111 (ZM) = (-1) 0 (2 4 + 2 3 + 2 2 + 2 1 + 2 0 ) 00011111 (ZM) = (16 + 8 + 4 + 2 + 1) 00011111 (ZM) = 31 (10)

Procedura wyznaczania zapisu ZM liczby dziesiętnej 1. Jeśli liczba jest dodatnia, to bit znaku ma wartość 0. W przeciwnym razie bit znaku ma wartość 1. 2. Obliczamy wartość absolutną liczby, czyli jej moduł. 3. Wyznaczamy bity modułu 4. Otrzymane bity modułu uzupełniamy w miarę potrzeby bitami o wartości 0, aby otrzymać ustaloną w formacie liczbę bitów dla modułu. 5. Do bitów modułu dodajemy bit znaku i otrzymujemy zapis ZM.

Przykład Przedstawić w 8-mio bitowym kodzie ZM liczbę o wartości dziesiętnej -9. Wyznaczamy bit znaku. Liczba -9 jest ujemna, zatem b 7 = 1 (najstarszy bit). Wartość absolutna z -9 to 9 (po prostu opuszcza się znak -). Obliczamy zapis dwójkowy modułu 9 (10) = 1001 (2). Moduł 8-mio bitowej liczby ZM składa się z 7 bitów, zatem do otrzymanego wyniku dodajemy trzy początkowe zera otrzymując 0001001. Łączymy bit znaku 1 z bitami modułu 0001001 i dostajemy zapis ZM liczby -9 (10) = 10001001 (ZM)

Zakres liczb w zapisie ZM Zadanie polega na znalezieniu najmniejszej i największej wartości liczby, którą da się przedstawić w danym zapisie ZM. Łatwo zauważyć, że w obu przypadkach moduł musi mieć wartość maksymalną, a bit znaku 1 dla wartości najmniejszej i 0 dla wartości największej. Ponieważ moduł jest zapisany w naturalnym kodzie dwójkowym NBC, jego wartość jest równa maksymalnej wartości n-1 bitowej liczby dwójkowej. Dla n bitów otrzymujemy: min (ZM) = 1b n-2 b n-3...b 2 b 1 b 0 = (-1) (b n-2 2 n-2 + b n-3 2 n-3 +...b 2 2 2 + b 1 2 1 + b 0 2 0 ) = -2 n-1 + 1 max (ZM) = 0b n-2 b n-3...b 2 b 1 b 0 = 1 (b n-2 2 n-2 + b n-3 2 n-3 +...b 2 2 2 + b 1 2 1 + b 0 2 0 ) = 2 n-1-1

Zakres liczby w zapisie ZM Zakres n bitowej liczby w kodzie ZM wynosi Z (ZM) = <-2 n-1 + 1, 2 n-1-1>

Zapis U1 Drugim podejściem do rozwiązania problemu liczb ze znakiem jest system uzupełnień do 1 zwany systemem U1 (ang. 1C - One's Complement). W systemie tym wszystkie bity zapisu liczby posiadają swoje wagi (w ZM bit znaku nie posiadał wagi). Najstarszy bit jest bitem znaku i ma wagę równą (-2 n-1 +1), gdzie n oznacza ilość bitów w zapisie liczby. Pozostałe bity posiadają wagi takie jak w naturalnym systemie dwójkowym

Wartość dziesiętna liczby w zapisie U1 Wartość liczby U1 obliczamy zgodnie z poznanymi zasadami - cyfry mnożymy przez wagi pozycji, na których się znajdują i dodajemy otrzymane iloczyny: b n-1 b n-2 b n-3...b 2 b 1 b 0 (U1) = b n-1 (-2 n-1 +1) + b n-2 2 n-2 + b n-3 2 n-3 +... + b 2 2 2 + b 1 2 1 + b 0 2 0 gdzie: b - bit, cyfra dwójkowa 0 lub 1 n - liczba bitów w zapisie liczby

Przeliczanie liczb dziesiętnych na zapis U1 Jeśli liczba jest dodatnia, to najstarszy bit znakowy posiada wartość 0. Pozostałe bity służą do zapisu liczby w naturalnym kodzie binarnym: 0111 (U1) = 7 (10), 0001 (U1) = 1 (10), 01111111 (U1) = 127 (10) Jeśli liczba jest ujemna, to najstarszy bit znakowy ma wartość 1. Pozostałe bity są negacjami bitów modułu wartości liczby: 1101 (U1) = (-2) (10) : moduł 2 (10) = 010 (2) : NOT 010 = 101 1100 (U1) = (-3) (10) : moduł 3 (10) = 011 (2) : NOT 011 = 100 1010 (U1) = (-5) (10) : moduł 5 (10) = 101 (2) : NOT 101 = 010

Procedura wyznaczania zapisu U1 dla liczby dziesiętnej 1.Jeśli liczba jest dodatnia, znajdujemy jej reprezentację w naturalnym kodzie binarnym i uzupełniamy bitami o wartości 0 do uzyskania zadanej liczby bitów wymaganej przez przyjęty format zapisu U1. 2.Jeśli liczba jest ujemna, obliczamy jej moduł. Moduł przedstawiamy w naturalnym systemie dwójkowym uzupełniając go bitami o wartości 0 do długości przyjętego formatu U1. Następnie wszystkie bity zamieniamy na przeciwne i w wyniku otrzymujemy zapis U1.

Przykład 1 Wyznaczyć 8-mio bitowy zapis U1 liczby dziesiętnej 76. Liczba 76 jest dodatnia, zatem wyznaczamy jej zapis w naturalnym systemie dwójkowym: 76 (10) = 1001100 (2) Otrzymaną liczbę dwójkową uzupełniamy bitami o wartości 0 do długości formatu otrzymując: 76 (10) = 01001100 (U1)

Przykład 2 Wyznaczyć 8-mio bitowy zapis U1 liczby dziesiętnej (-113). Liczba (-113) jest ujemna. Jej moduł wynosi 113. Wyznaczamy zapis dwójkowy modułu: 113 (10) = 1110001 (2) Otrzymany zapis uzupełniamy bitami 0 do długości 8 bitów. Następnie negujemy wszystkie bity i otrzymujemy w ten sposób zapis U1 liczby -113: -113 (10) = NOT 01110001 = 10001110 (U1).

Zakres liczb w zapisie U1 Liczba U1 przyjmuje wartość największą dla bitu znaku równego 0 i pozostałych bitów równych 1. Ponieważ pozostałe bity przedstawiają w tym przypadku liczbę n-1 bitową w naturalnym kodzie dwójkowym, to dla n bitowego kodu U1 otrzymujemy: max (U1) = 2 n-1-1. Najmniejszą wartość liczba U1 przyjmuje dla bitu znakowego równego 1 (waga ujemna) i pozostałych bitów równych 0. Ponieważ w tym przypadku do wagi bitu znakowego nic nie dodajemy, otrzymujemy: min (U1) = -2 n-1 + 1

Zakres liczb w zapisie U1 Zakres n bitowej liczby w kodzie U1 wynosi Z (U1) = (-2 n-1 + 1, 2 n-1-1) Zakres ten jest identyczny z zakresem liczb w kodzie ZM.

Zapis U2 Zapis U1 posiada kilka niedogodności (arytmetyka zmieniamy wagę bitu znakowego z (-2 n-1 + 1) na (-2 n-1 ), gdzie n oznacza ilość bitów w formacie kodu. Wagi stają się teraz jednorodne - bit znakowy posiada wagę ujemną, lecz o wartości bezwzględnej takiej samej jak w naturalnym kodzie dwójkowym. Nowy kod nosi nazwę uzupełnień do podstawy 2 lub w skrócie U2 (ang. 2C - Two's Complement). 19

Wartość dziesiętna liczby w zapisie U2 Wartość liczby U2 obliczamy zgodnie z poznanymi zasadami - cyfry mnożymy przez wagi pozycji, na których się znajdują i dodajemy otrzymane iloczyny. Waga bitu znakowego jest ujemna. b n-1 b n-2 b n-3...b 2 b 1 b 0 (U2) = b n-1 (-2 n-1 ) + b n-2 2 n-2 + b n-3 2 n-3 +... + b 2 2 2 + b 1 2 1 + b 0 2 0 gdzie b - bit, cyfra dwójkowa 0 lub 1 n - liczba bitów w zapisie liczby

Przykład Najstarszy bit określa znak liczby. Jeśli jest równy 0, liczba jest dodatnia i resztę zapisu możemy potraktować jak liczbę w naturalnym kodzie dwójkowym. 01101011(U2) = 64 + 32 + 8 + 2 + 1 = 107(10). Jeśli bit znaku ustawiony jest na 1, to liczba ma wartość ujemną. Bit znaku ma wagę (-2n-1), gdzie n oznacza liczbę bitów w wybranym formacie U2. Reszta bitów jest zwykłą liczbą w naturalnym kodzie dwójkowym. Wagę bitu znakowego i wartość pozostałych bitów sumujemy otrzymując wartość liczby U2: 11101011(U2) = (-27) + 64 + 32 + 8 + 2 + 1 = -128 + 107 = (- 21)(10). Zwróć uwagę, iż postać ujemna liczby U2 nie jest już tak czytelna dla nas jak w przypadku kodów ZM (tylko zmiana bitu znaku) i U1 (negacja wszystkich bitów).

przeliczanie ujemnej liczby dziesiętnej na zapis U2 sposób 1 Liczba ujemna musi mieć ustawiony na 1 bit znaku. Zatem nasze zadanie sprowadza się do znalezienia wartości pozostałych bitów. Bit znaku stoi na pozycji o wadze (-2 n-1 ), n - ilość bitów w formacie U2. Pozostałe bity zapisu liczby tworzą naturalny od dwójkowy. Wartość tego kodu musi być taka, aby po dodaniu jej do wagi pozycji znakowej otrzymać wartość kodowanej liczby. Zapiszmy to w formie równania: kodowana liczba = waga bitu znakowego + wartość kodu pozostałych bitów kodowana liczba = (-2 n-1 ) + wartość kodu pozostałych bitów stąd wartość kodu pozostałych bitów = 2 n-1 + kodowana liczba Po wyznaczeniu wartości tego kodu tworzymy jego zapis w systemie dwójkowym, uzupełniamy w miarę potrzeby bitem 0 do długości formatu U2-1 i dodajemy bit znakowy 1. Konwersja jest gotowa

Przykład Wyznaczyć 8-mio bitowy kod U2 dla liczby dziesiętnej (-45) (10). Wyznaczamy moduł wagi pozycji znakowej. Dla n = 8, 2 n-1 = 2 7 = 128 wartość kodu pozostałych bitów = 128 + (-45) = 83 = 1010011 (2) Dodajemy bit znaku równy 1 i otrzymujemy: (-45) (10) = 11010011

przeliczanie ujemnej liczby dziesiętnej na zapis U2 sposób 2 Jeśli do liczby 2 n (n - ilość bitów w formacie U2) dodamy przetwarzaną liczbę dziesiętną, to w wyniku otrzymamy wartość kodu dwójkowego równoważnego bitowo (tzn. o takiej samej postaci) kodowi U2 przetwarzanej liczby. Wynik dodawania wystarczy zapisać w postaci naturalnego kodu dwójkowego i konwersja jest zakończona.

Przykład Wyznaczyć 8-mio bitowy kod U2 dla liczby dziesiętnej (-45). (10) 2 8 + (-45) = 256-45 = 211 = 11010011. (2) Stąd (-45) = 11010011. (10) (U2)

Zakres liczb w zapisie U2 Największa liczba U2 powstaje dla bitu znaku równego 0, a pozostałych bitów równych 1. Ponieważ pozostałe bity przedstawiają wartość w naturalnym kodzie binarnym i jest ich n-1, to max (U2) = 2 n-1-1 Z kolei najmniejszą wartość liczby U2 otrzymamy dla bitu znaku równego 1, a pozostałych bitów równych 0. W tym przypadku wartość liczby jest równa wadze pozycji znakowej, czyli min (U2) = (-2 n-1 )

Zakres liczb w zapisie U2 Zakres n bitowej liczby w kodzie U2 wynosi Z (U2) = (-2 n-1, 2 n-1-1) W porównaniu z systemami ZM i U1, zakres liczb U2 jest niesymetryczny - liczb ujemnych jest o jedną więcej niż liczb dodatnich