Liczby zmiennopozycyjne. Kody Hamminga.

Podobne dokumenty
Liczby zmiennoprzecinkowe

WST P DO TEORII INFORMACJI I KODOWANIA. Grzegorz Szkibiel. Wiosna 2013/14

1 Bª dy i arytmetyka zmiennopozycyjna

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

Podstawy Informatyki

2 Liczby rzeczywiste - cz. 2

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

i, lub, nie Cegieªki buduj ce wspóªczesne procesory. Piotr Fulma«ski 5 kwietnia 2017

Pracownia Komputerowa wykład VI

Metody dowodzenia twierdze«

JAO - J zyki, Automaty i Obliczenia - Wykªad 1. JAO - J zyki, Automaty i Obliczenia - Wykªad 1

Architektury systemów komputerowych

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

WST P DO TEORII INFORMACJI I KODOWANIA. Grzegorz Szkibiel. Wiosna 2013/14

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

ANALIZA NUMERYCZNA. Grzegorz Szkibiel. Wiosna 2014/15

Technologie Informacyjne

Pracownia Komputerowa wyk ad VI

Relacj binarn okre±lon w zbiorze X nazywamy podzbiór ϱ X X.

LICZBY ZMIENNOPRZECINKOWE

Metodydowodzenia twierdzeń

Ukªady równa«liniowych

x y x y x y x + y x y

Ciaªa i wielomiany. 1 Denicja ciaªa. Ciaªa i wielomiany 1

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

ARCHITEKRURA KOMPUTERÓW Kodowanie liczb ze znakiem

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

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

Bash i algorytmy. Elwira Wachowicz. 20 lutego

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

Zapis liczb binarnych ze znakiem

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

Lekcja 8 - ANIMACJA. 1 Polecenia. 2 Typy animacji. 3 Pierwsza animacja - Mrugaj ca twarz

Arytmetyka binarna - wykład 6

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

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

Opis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej

Metody numeryczne i statystyka dla in»ynierów

Podstawy Informatyki

Architektura komputerów

Lekcja 9 - LICZBY LOSOWE, ZMIENNE

Dokªadny jak komputer?

Dokªadny jak komputer

1 Metody iteracyjne rozwi zywania równania f(x)=0

Pozycyjny system liczbowy

Wprowadzenie do informatyki - ć wiczenia

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Wykªad 7. Ekstrema lokalne funkcji dwóch zmiennych.

Naturalny kod binarny (NKB)

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

A = n. 2. Ka»dy podzbiór zbioru sko«czonego jest zbiorem sko«czonym. Dowody tych twierdze«(elementarne, lecz nieco nu» ce) pominiemy.

Liniowe zadania najmniejszych kwadratów

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

O pewnym zadaniu olimpijskim

X WARMI SKO-MAZURSKIE ZAWODY MATEMATYCZNE 18 maja 2012 (szkoªy ponadgimnazjalne)

Semestr letni 2014/15

Wprowadzenie do informatyki - ć wiczenia

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

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

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

Architektura komputerów Reprezentacja liczb. Kodowanie rozkazów.

Rzut oka na zagadnienia zwi zane z projektowaniem list rozkazów

Zestaw 3. - Zapis liczb binarnych ze znakiem 1

Rozdział 6. Pakowanie plecaka. 6.1 Postawienie problemu

ARYTMETYKA MODULARNA. Grzegorz Szkibiel. Wiosna 2014/15

Arkusz maturalny. Šukasz Dawidowski. 25 kwietnia 2016r. Powtórki maturalne

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

Pracownia Komputerowa wykład V

Kod U2 Opracował: Andrzej Nowak

Wybrane poj cia i twierdzenia z wykªadu z teorii liczb

Reprezentacja stałoprzecinkowa. Reprezentacja zmiennoprzecinkowa zapis zmiennoprzecinkowy liczby rzeczywistej

Arytmetyka zmiennopozycyjna

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

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

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

XVII Warmi«sko-Mazurskie Zawody Matematyczne

Maszyny Turinga i problemy nierozstrzygalne. Maszyny Turinga i problemy nierozstrzygalne

Vincent Van GOGH: M»czyzna pij cy li»ank kawy. Radosªaw Klimek. J zyk programowania Java

ELEMENTARNA TEORIA LICZB. 1. Podzielno±

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA. W obu podpunktach zakªadamy,»e kolejno± ta«ców jest wa»na.

Teoretyczne Podstawy Informatyki

Wstęp do Informatyki

Metody numeryczne. Wst p do metod numerycznych. Dawid Rasaªa. January 9, Dawid Rasaªa Metody numeryczne 1 / 9

punkcie. Jej granica lewostronna i prawostronna w punkcie x = 2 wynosz odpowiednio:

Interpolacja funkcjami sklejanymi

LZNK. Rozkªad QR. Metoda Householdera

PODSTAWY METROLOGII ĆWICZENIE 4 PRZETWORNIKI AC/CA Międzywydziałowa Szkoła Inżynierii Biomedycznej 2009/2010 SEMESTR 3

Informacje pomocnicze

Typy danych i formatowanie

Zwykle liczby rzeczywiste przedstawia się w notacji naukowej :

LICZBY ZMIENNOPRZECINKOWE

Ekstremalnie fajne równania

Kodowanie informacji. Kody liczbowe

Semestr letni 2014/15

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

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

Wielomiany o wspóªczynnikach rzeczywistych

Architektura komputerów

Transkrypt:

Liczby zmiennopozycyjne. Kody Hamminga. 1 Liczby zmiennopozycyjne 1.1 Wprowadzenie Najprostszym sposobem reprezentowania liczb rzeczywistych byªaby reprezentacja staªopozycyjna: zakªadamy,»e mamy n bitów na cz ± caªkowit oraz m na cz ± uªamkow. Wad takiego rozwi zania jest stosunkowo niewielki przedziaª, z którego liczby mo»emy reprezentowa : cz sto podczas oblicze«u»ywamy zarówno warto±ci bardzo du»ych jaki i bardzo maªych. Dlatego w komputerach przechowuje si liczby rzeczywiste w postaci zmiennoprzecinkowej (ang. oating point): ±m b e. Pami tamy osobno znak, mantys m oraz wykªadnik e. Podstawa b jest ustalona (zazwyczaj 2) i nie jest jawnie przechowywana. W konkretnej reprezentacji na mantys i wykªadnik przeznaczone s odpowiednie, ustalone liczby bitów. Zatem potramy reprezentowa sko«czon liczb warto±ci. Im dªu»sza mantysa, z tym wi ksz dokªadno±ci mo»emy reprezentowa liczby. Z kolei im dªu»szy wykªadnik, tym wi kszy przedziaª z jakiego liczby potramy reprezentowa. Ka»d liczb mo»na zapisa w postaci zmiennopozycyjnej na wiele sposobów. W konkretnych reprezentacjach ustala si posta jednoznaczn, tzw. znormalizowan. Zazwyczaj przyjmuje si,»e przecinek w mantysie ustawiony jest bezpo±rednio przed pierwsz cyfr znacz c lub za ni. W przypadku podstawy reprezentacji b = 2 pierwsza cyfra znacz ca 1 nie jest zazwyczaj jawnie pami tana. Mówimy wtedy o ukrytej 1. Zauwa»my,»e przy takim zaªo»eniu nie mo»na reprezentowa liczby 0. Dlatego 0 jak i kilka innych warto±ci traktowanych jest wyj tkowo i przypisywane s im specjalne ci gi bitów. 1.2 Prosta modelowa reprezentacja Rozwa»my prost modelow reprezentacj, w której liczby pami tane s jako ci gi pi ciobitowe zeemm, gdzie z oznacza bit znaku (0 - plus, 1 minus), ee to dwubitowy wykªadnik pami tany z przesuni ciem o 2 (tzn. liczba x jest pami tana jako naturalny kod binarny liczby x + 2; reprezentacja z przesuni ciem jest standardem dla wykªadników), a mm to dwa bity znormalizowanej mantysy. Zakªadamy,»e pierwsza jedynka w mantysie jest przed przecinkiem i jest ukryta, zatem np. bity 01 reprezentuj mantys 1.01. Rysunek 1: Liczby reprezentowalne w naszym modelu 1

Reprezentowalne warto±ci przedstawione s na rysunku 1. Najmniejsza reprezentowalna warto± dodatnia to 1 4 wstawiamy najmniejsz mo»liw mantys : 1.00 oraz najmniejszy wykªadnik: 2. Odpowiedni ci g bitów to 00000. Podobnie, najwi ksz warto±ci jest 3 1 2 : 011111. Zauwa»my,»e pomi dzy reprezentowalnymi liczbami pojawiaj si ró»ne odst py im wi ksze 1 warto±ci, tym wi ksze odst py. I tak najmniejszy odst p wynosi 16 (gdy wykªadnik jest równy -2 i zmieniamy mantys o 1 4, a najwi kszy 1 2, gdy wykªadnik jest równy 2. Za to mniej wi cej staªa jest wzgl dna odlegªo± : stosunek warto±ci liczby do warto±ci jej s siada. Zatem mo»emy powiedzie,»e w naszej reprezentacji mamy mniej wi cej staªy wzgl dny bª d przybli»enia. Jeszcze jedn charakterystyczn cech reprezentacji zmiennopozycyjnej (znormalizowanej) jest stosunkowo du»y odst p pomi dzy zerem a pierwsz reprezentowaln warto±ci. Przedziaª pomi dzy zerem a pierwsz warto±ci reprezentowaln nazywany jest niedomiarem (odpowiednio dodatnim lub ujemnym). Mówimy tak»e o nadmiarze (równie» dodatnim lub ujemnym) jest to przedziaª powy»ej (poni»ej) najwi kszej (najmniejszej) reprezentowalnej warto±ci. O arytmetyce zmiennopozycyjnej b dziemy mówi nieco dalej, teraz spróbujmy wykona w naszej reprezentacji proste dziaªanie a + b dla a = 0.7 i b = 1.8. Przeksztaª my nasze uªamki na system binarny: a = 0.10110... 1.01 2 1, b = 1.11001100... 1.11 2 0. Poniewa» mo»emy pami ta tylko dwa bity mantysy, to ju» na pocz tku tracimy precyzj. Wyrównujemy wykªadniki zwi kaszaj c pierwszy do 0: a = 0.10 2 0. Ponownie tracimy precyzj (w rzeczywisto±ci mo»e by ciut lepiej, bo obliczenia po±rednie wykonywane s zazwyczaj na rozszerzonej reprezentacji zawieraj cej dodatkowe bity). Dodajemy mantysy: a + b = 10.01 2 0. Normalizujemy wynik otrzymuj c a + b = 1.00 2 1, czyli 2.... Zauwa»,»e dokªadny wynik dodawanie to 2.5 i jest on dokªadnie reprezentowalny w naszym modelu. Podobne bª dy napotykamy w prawdziwych implementacjach arytmetyki zmiennoprzecinkowej. Oto prosty przykªad ilustruj cy bª d wynikaj cy z braku dokªadnej reprezentacji dla pewnych liczb. Uruchom nast puj ce programy w j zyku C: int main{} { float suma=0; long i; for (i=0; i<100000; ++i) suma=suma+0.6; } printf{"%f", suma); int main{} { float suma=0; long i; for (i=0; i<100000; ++i) suma=suma+0.5; } printf{"%f", suma); W pierwszym przypadku wynik odbiega od oczekiwanego, w drugim jest poprawny. Wynika 2

to z faktu,»e 0.6, w przeciwie«stwie do 0.5 nie ma dokªadnej reprezentacji w systemie dwójkowym (z ograniczon liczb bitów po przecinku). 1.3 Standard IEEE 754 Norma IEEE 754 jest powszechnie obowi zuj cym standardem w jakim przechowywane s we wspóªczesnych komputerach liczby zmiennopozycyjne. Oprócz formatu danych okre±la on te» pewne zasady wykonywania oblicze«arytmetycznych, dzi ki czemu mo»na zaªo»y,»e ten sam program, napisany np. w j zyku C, uruchomiony na ró»nych maszynach da te same rezultaty. Mamy dwa formaty: 32-bitowy pojedynczej precyzji (float w C) i 64-bitowy (podwójnej precyzji) (double w C). Dodatkowo deniowane s formaty pomocnicze: rozszerzony pojedynczej precyzji i rozszerzony podwójnej precyzji. Sªu» one do wykonywania oblicze«po±rednich. Format pojedynczej precyzji Mantysa: 23 bity (znormalizowana, ukryta 1 przed przecinkiem), wykªadnik: 8 bitów (przesuni cie 127), zakres liczb dodatnich: 10 38, 10 +38, liczba reprezentowalnych warto±ci: 1, 98 2 31. Format podwójnej precyzji Mantysa: 52 bity (znormalizowana, ukryta 1 przed przecinkiem), wykªadnik: 11 bitów (przesuni cie 1023), zakres liczb dodatnich: 10 308, 10 +308, liczba reprezentowalnych warto±ci: 1, 99 2 63. Niektóre sekwencje bitów s interpretowane w specjalny sposób. S to sekwencje z wykªadnikiem skªadaj cym si z samych zer lub samych jedynek: same 0 w wykªadniku, same zera w mantysie: reprezentuj 0 (dodatnie lub ujemne...) same 0 w wykªadniku, niezerowa mantysa: liczb zdenormalizowana (bit na lewo od przecinka jest zerem, wykªadnik wynosi -126 lub -1022); pomysª na redukcj odst pu pomi dzy zerem a najmniejsz dodatni (ujemn ) liczb reprezentowaln. same 1 w wykªadniku, same 0 w mantysie: plus lub minus niesko«czono± same 1 w wykªadnkiu, niezerowa mantysa: NaN (not a number) sytuacja wyj tkowa 2 Arytmetyka zmiennoprzecinkowa Ze wzgl du na zupeªnie inn reprezentacj za operacje arytemtyczne na liczbach zmiennopozycyjnych odpowiedzialne s zupeªnie inne obwody procesora ni» za operacje caªkowitoliczbowe. 2.1 Dodawanie i odejmnowanie 1. Wyrównywanie wykªadników 2. Dodawanie lub odejmnowanie mantys 3. Normalizowanie wyniku. 4. Zaokr glanie wyniku. 2.2 Mno»enie i dzielenie 1. Dodawanie lub odejmowanie wykªadników 2. Mno»enie lub dzielenie mantys, ustawianie znaku 3

3. Normalizowanie wyniku 4. Zaokr glanie Schemat ukªadu realizuj cego dodawanie przedstawiony jest na rysunku 2. Ukªad steruj cy (control) generuje sygnaªy steruj ce caªym procesem na podstawie ró»nicy wykªadników, a nast pnie wyniku dodawania mantys. Rysunek 2: Schemat ukªadu dodaj cego liczby zmiennoprzecinkowe 3 Kody Hamminga Rozwa»my kody dwóch znaków (tej samej dªugo±ci). Mówimy,»e odlegªo± Hamminga pomi dzy nimi wynosi d, je±li ró»ni si na dokªadnie d bitach. Rozwa»my teraz dowolny kod znakowy 4

(kodem znakowym b dziemy nazywali formalnie funkcj, która znakom z pewnego ustalonego zbioru przyporz dkowuje ci gi bitów (zazwyczaj) ustalonej dªugo±ci). Mówimy,»e ma on odlegªo± Hamminga równ d, je±li d jest minimaln odlegªo±ci Hamminga pomi dzy reprezentacjami znaków w tym kodzie. Np. kod ASCII ma odlegªo± Hamminga równ 1 zmiana pojedynczego bitu w jednym znaku kodu daje nam inny, poprawny znak. 3.1 Bity parzysto±ci Do ka»dego zakodowanego znaku dodajemy bit, tak aby sumaryczna liczba jedynek byªa parzysta. Zauwa»,»e np. kod ASCII poszerzony o bit parzysto±ci ma odlegªo± Hamminga równ 2 zmiana pojedynczego bitu prowadzi do uzyskania niepoprawnego ci gu bitów. W efekcie potra- my wykrywa pojedyncze przekªamania bitów. Nie potramy ich jednak poprawia nasz kod jest kodem detekcyjnym. 3.2 Kod detekcyjno-korekcyjny (kod Hamminga) Chcemy zaprojektowa kod, który potra nie tylko wykrywa pojedyncze przekªamania, ale tak»e automatycznie je poprawia. Wymaga on b dzie znacznej nadmiarowo±ci: zaªó»my,»e oryginalny kod jest 7-bitowy. Pojedyncze przekªamania bitu mog prowadzi do 7 ró»nych sªów. Ka»de z nich musi by jednoznacznie zwi zne z ci giem oryginalnym. Tak naprawd, potrzebujemy zatem 8 ró»nych ci gów bitów dla jednego znaku wyj±ciowego alfabetu. Rozwa»my na pocz tek prosty przykªad. Niech poprawnymi ci gami znaków w naszym kodzie korekcyjnym b d : {00000, 01011, 10110, 11101}. Odlegªo± Hamminga dla tego kodu wynosi 3. Zauwa»my,»e wystarczy to do korygowania pojedynczych bª dów (oraz wykrywania podwójnych). Zaªó»my,»e odczytali±my sªowo 10000. Nie jest to poprwne sªowo naszego kodu, musi zatem zawiera co najmniej jeden bª d. Jakie s jego odlegªo±ci od sªów poprawnych? 1, 4, 2, 3. Je±li zatem nast piªo pojedyncze przekªamanie, to wysªanym ci giem musiaª by 00000. Zaªó»my ogólnie,»e kod wyj±ciowy jest m-bitowy. Je±li dodamy r bitów nadmiarowych, to musi zachodzi nast puj ca relacja: 2 m (m + r + 1) 2 m+r, a wi c m + r + 1 2 r. Dlaczego: mamy 2 m sªów (znaków) oryginalnych; pozycji na których mo»e doj± do przekªamania bitu jest m + r (do przekªamania mo»e doj± tak»e na bitach dodatkowych!), st d kod korekcyjny musi mie 2 m (m + r + 1) sªów, a mo»e ich mie maksymalnie 2 m+r. Np. je±li m jest równe 4, to r musi by równe co najmniej 3. Jak zbudowa kod korekcyjny? Oto prosty algorytm: 1. Okre±lamy liczb bitów nadmiarowych r, numerujemy n bitów (n = m + r) od prawej do lewej zaczynaj c od 1. 2. Bity, których numery s pot gami dwójki to bity nadmiarowe, które b d bitami parzysto±ci dla pewnych innych bitów. Pozostaªe to bity danych. 3. Bit b jest sprawdzany przez bity b i1, b i2,..., b ik, dla których b i1 + b i2 +..., b ik = b i i j s pot gami dwójki. Przykªad. Skonstuujemy kod dla 8-bitowego kodu ASCII. Z podanego wzoru wynika,»e r musi by równe co najmniej 4. Zatem pojedynczy znak b dzie opisywany przez 12-bitów, z czego bity 1,2,4,8 b d bitami nadmiarowymi: 8 4 2 1. Bit 1 b dzie bitem parzysto±ci dla bitów: 1,3,5,7,9,11; bit 2 dla bitów 2,3,6,7,10,11, bit 4 dla 4,5,6,7,12, bit 8 dla 8,9,10,11,12 (przypominamy: bit 6 jest kontrolowany przez bity 2, 4, bit 11 przez bity 1, 2, 8, bit 10 przez bity 2, 8). 5

Zakodujmy liter K (ASCII: 01001011): 010011010110. Wprowad¹my bit na bicie b 9 : 010111010110. Bª dy parzysto±ci wykrywaj bity b 1 i b 8. Kontroluj one wspólnie pozycje 9 i 11, na której± z nich musi by zatem bª d. Jest to pozycja 9, bo przy 11 bª d wskazywaªby tak»e bit b 2. Najpro±ciej jest zsumowa indeksy bª dnych bitów parzysto±ci: 1 + 8 = 9. 6