Arytmetyka komputerowa Wszelkie liczby zapisuje się przy użyciu bitów czyli cyfr binarnych: 0 i 1 Ile różnych liczb można zapisać używajac n bitów? n liczby n-bitowe ile ich jest? 1 0 1 00 01 10 11 3 000001010011100101110111 8 00000001001000110100010101100111 10001001101010111100110111101111 16 n n istnieje n różnychliczbn-bitowych Arytmetyka komputerowa Wykład 8 ARYTMETYKA KOMPUTEROWA, str W jaki sposób użyć tych n bitów do reprezentacji liczb całkowitych żeby zapisać zarówno liczby dodatnie jak ujemne, żeby każdy układ bitów odpowiadał dokładnie jednej liczbie, żeby łatwo wykonywało się podstawowe operacje arytmetyczne Zapis stałopozycyjny liczb: ciągbitówb n 1 b 1 b 0 reprezentujeliczbę ( n i=0 b i i ) b n 1 n 1 =b 0 0 +b 1 1 ++b n n b n 1 n 1
Arytmetyka komputerowa zapis stałopozycyjny Załóżmy, że liczby są 3-bitowe Wtedy: 000 = 0+0 0 = 0 001 = 1+0 0 = 1 010 = 0+1 0 = 011 = 1+1 0 = 3 100 = 0+0 1 = 101 = 1+0 1 = 3 110 = 0+1 1 = 111 = 1+1 1 = 1 Wykład 8 ARYTMETYKA KOMPUTEROWA, str Arytmetyka reszt(arytmetyka modulo n) 5 6 3 1 0 7 8 9 Sklejamy liczby całkowite: n 1= 1 n=0 n+1=1 Inaczej: każdą liczbę m zastępujemy przezm%n resztęzdzieleniamprzezn Arytmetyka liczb całkowitych na komputerze jest arytmetyką reszt (patrz niżej)
Arytmetyka reszt(arytmetyka modulo n) Niechn DEFINICJA: (relacja modulo n) MDwieliczbycałkowitepiqsąrównemodulon,jeślirównesąresztyzich dzielenia przez n: p n q def p%n=q%n Fakt: Mp n q p qjestpodzielneprzezn Fakt: MRelacja n jestrelacjąrównoważnościna Z;tznjest zwrotna: p n p symetryczna: jeśli p n q to q n p przechodnia: jeśli p n q i q n r to p n r Relacja równoważności pozwala podzielić zbiór Z na klasy abstrakcji: do każdej klasy wchodzą liczby o tej samej reszcie z dzielenia przez n Wykład 8 ARYTMETYKA KOMPUTEROWA, str 6 Arytmetyka reszt(arytmetyka modulo n) Sklejenie modulo jest rozdzielne względem dodawania, odejmowania i mnożenia liczb całkowitych: (m+k)%n = (m%n+k%n)%n (13+)%8=(13%8+%8)%8 =(5+)%8=9%8=1 (m k)%n = (m%n k%n)%n (13 6)%8=(13%8 6%8)%8 =(5 )%8=3%8=3 (m k)%n = (m%n k%n)%n (13 6)%8=(13%8 6%8)%8 =(5 )%8=10%8= Sklejenie modulo jest kongruencją względem tych działań
Arytmetyka komputerowa ujemne 3 3 1 0 1 dodatnie arytmetyka 3-bitowa, czyli modulo 3 =8 Arytmetyka liczb całkowitych w języku C w moim komputerze jest czterobajtowa;toznaczymodulo( 8 ) = 8 = 3 Dlategowgniego 65536 65535= 65536 bo 65536= 16 ( 16 ( 16 1))% 3 =( 3 16 )% 3 = 16 % 3 Wykład 8 ARYTMETYKA KOMPUTEROWA, str 8 Arytmetyka komputerowa działania Ist10rodzludzi:ci,corozumiejąliczbybinarneici,conierozumieją Binarne dodawanie stałopozycyjne 1+7=? 1= 5 + 3 + 0 7= + 3 + 1 + 0 przeniesienie: 11011 składnik 1: 1 czyli: 101001 składnik : 7 czyli: + 11011 suma: 1000100 czyli 6 + =68
Arytmetyka komputerowa działania Ist10rodzludzi:ci,corozumiejąliczbybinarneici,conierozumieją Binarne dodawanie stałopozycyjne 1+( 7)=? zakładamy,żenaliczbęcałkowitąprzypada8bitów 1= 5 + 3 + 0 7=56 7=9= 7 + 6 + 5 + + 0 przeniesienie: 1100001 składnik 1: 1 czyli: 101001 składnik: -7czyli: +11100101 suma: 00001110 czyli 3 + + 1 =1 Wykład 8 ARYTMETYKA KOMPUTEROWA, str 10 Arytmetyka komputerowa działania Binarne mnożenie stałopozycyjne 1 7=? zakładamy,żenaliczbęcałkowitąprzypada8bitów 1= 5 + 3 + 0 7= + 3 + 1 + 0 przeniesienie: 1111000 czynnik 1: 1 czyli: 101001 czynnik : 7 czyli: 11011 101001 101001 000000 01001 +1001 suma: 01010011 czyli 6 + + 1 + 0 =83
Arytmetyka komputerowa zapis zmiennopozycyjny zapis zapis zapis komputerowy tradycyjny przyrodniczy stałopozycyjny 501E9 501 10 9 501000000 501E-6 501 10 6 000000501 Liczby bardzo duże lub bardzo małe zapisuje się w postaci gdzie 1 mantysa<10 i cecha Z(liczba całkowita) znak mantysa 10 cecha Wewnętrzna komputerowa reprezentacja różni się tym, żepodstawąniejest10tylko Wykład 8 ARYTMETYKA KOMPUTEROWA, str 1 Arytmetyka komputerowa zapis zmiennopozycyjny 1Przedstawićliczbęrzeczywistąxwpostacix=z m c,gdzie znakzjestalbo 1albo1, mantysa m jest liczbą rzeczywistą taką że: m=0lub1 m<, ( ] [ ) cecha c jest liczbą całkowitą 1 0 1 O jednoznaczności takiego przedstawienia patrz dalej Cechę zapisujemy binarnie w zwykły sposób(to jest liczba całkowita) 3Mantysęzapisujemypodobnie,zapodstawębiorącjednak 1 zamiast:ciąg m 0 m 1 m reprezentujeliczbę + i=0 (m 0 =1 zawsze) m i i = m 0 0 +m 1 1 +m + każdem itoalbo0albo1 Ucinamynieskończonyciągm 0 m 1 m zależnieodliczbybitówprzeznaczonych na mantysę liczby
Arytmetyka komputerowa zapis zmiennopozycyjny MZałóżmy, że poświęcamy: nacechę:8bitów; namantysę:7bitów; naznakliczby:1bit Jakprzedstawićliczbę 1 7? 1 7 = 1 7 0 = 7 1 = 7 = 8 7 3 ( 1+ 0 +0 +1 8 + 0 16 + 0 3 + 1 ) 3 6 znak cecha mantysa 0 11111101 1001001 + 3 8/7 Wykład 8 ARYTMETYKA KOMPUTEROWA, str 1 Arytmetyka komputerowa zapis zmiennopozycyjny MZałóżmy, że poświęcamy: nacechę:8bitów; namantysę:7bitów; naznakliczby:1bit Liczba 0 1 3 : 61 3 = 61 3 0 = 61 8 ( 1+ 0 +1 +0 8 + 0 16 + 0 3 + 1 6 ) znak cecha mantysa 1 00000100 1010001 61/8
Arytmetyka komputerowa zapis zmiennopozycyjny MZałóżmy, że poświęcamy: nacechę:8bitów; namantysę:7bitów; naznakliczby:1bit znak cecha mantysa 1 01001000 1101001 7 105/6 ( 1+ 1 +0 +1 8 +0 16 + 0 3 + 1 ) 7 6 Jaką liczbę przedstawia poniższy układ bitów? = 6+3+8+1 6 7 = 105 6 7 = 105 66 7776351096 10 1 Wykład 8 ARYTMETYKA KOMPUTEROWA, str 16 Arytmetyka komputerowa zapis zmiennopozycyjny Własności: x=( 1) s m c Jeślicechacmakbitów,to k 1 c< k 1,więc k 1 c < k 1 (npdlak=8: 1 18 c < 18 30837 10 38 ) Im więcej bitów ma cecha, tym większy zakres przedstawianych liczb Jeślimantysammanbitów,toliczbymożnaprzedstawićzdokładnością do 1 n 1 c (npdlan=7dokładnośćdook1565 10 c ) Im więcej bitów ma mantysa, tym większa dokładność(mniejsze ziarno ) przedstawianych liczb Dokładność jest większa dla liczb bliskich zeru
Arytmetyka komputerowa zapis zmiennopozycyjny Im więcej bitów ma cecha, tym większy zakres przedstawianych liczb Im więcej bitów ma mantysa, tym większa dokładność(mniejsze ziarno ) przedstawianych liczb Jeśli przeznaczymy bitynacechę(wartościcechy:, 1,0,1)i 3bitynamantysę (wartościmantysy:0,, 5, 6, 7 ), to potrafimy przedstawić następujące liczby nieujemne: c= c= 1 {}}{{}}{ 0 1 516 16 16 7 16 6 c=0 {}}{ c=1 {}}{ 1 8 5 8 6 8 7 8 +tylesamopoujemnejstroniezera 5 6 7 5 6 7 Wykład 8 ARYTMETYKA KOMPUTEROWA, str 18 Arytmetyka komputerowa zapis zmiennopozycyjny TWIERDZENIE: (jednoznaczność zapisu zmiennopozycyjnego) MZałóżmy,że: 1c 1,c Z(lcałkowite),m 1,m R(lrzeczywiste), 1 m 1 <i1 m <, 3m 1 c 1 =m c Wtedym 1 =m ic 1 =c Dowód twierdzenia o jednoznaczności: Z??wynika 1= m 1 c 1 m c = m 1 m c 1 c Jeślic 1 =c,to c 1 c =1im 1 =m,koniecdowodu Jeślic 1 <c,toc 1 c 1,to c 1 c 1,to1 m 1 Aletoniemożliwe,bom 1 <im 1 m 1,to m 1 m
Arytmetyka komputerowa działania Binarne mnożenie zmiennopozycyjne (m 1 c 1 ) (m c )=(m 1 m ) c 1+c M 015 978=(17 3 ) (19 9 ) =(17 19) 6 =33 6 (normalizacjawyniku) =1615 7 =067 Wykład 8 ARYTMETYKA KOMPUTEROWA, str 0 Arytmetyka komputerowa działania Binarne dodawanie zmiennopozycyjne (m 1 c 1 )+(m c )=(m 1 c 1 )+((m c c 1 ) c 1 ) =(m 1 +m c c 1 ) c 1 Dodawanie wymaga przeskalowania jednego składnika; to jest skomplikowane i prowadzi do utraty precyzji M 978+015=19 9 +17 3 =19 9 +(17 1 ) 9 =19 9 +000015039065 9 =(19+000015039065) 9 =190015039065 9
Arytmetyka komputerowa działania Utrata precyzji przy dodawaniu MZałóżmy, że poświęcamy na cechę: 8 bitów; na mantysę: 8 bitów (15 100 )+(15 100 )=(15 100 )+((15 00 ) 100 ) =(15+15 00 ) 100 Ale15 00 wmantysietodwabityprzesuniętewprawoo00pozycji; amantysamaichtylko8;więcpotymprzesunięciuwychodzi0takwięc (15 100 )+(15 100 )=15 100 chociaż 15 100 0