Skip to main content

Znormalizowane formularze opcje binarne


Ta strona jest tłumaczona z oryginału przy użyciu tłumacza Google. IEEE 754 - Standardowy binarny arytmetyczny pływak Autor: Yashkardin Vladimirnbsp nbsp softelectro. ru nbsp nbsp 2009-2017 nbsp nbsp nbsp nbsp nbsp infosoftelectro. ru 1. Tytuł Standard. Ten standard jest połączeniem stowarzyszenia IEEE (Instytut Inżynierii Elektrycznej i Elektroniki) i jest używany do reprezentowania liczb rzeczywistych (zmiennoprzecinkowych) w kodzie binarnym. Najczęściej używana standardowa zmienna pływająca, używana przez wiele mikroprocesorów i urządzeń logicznych oraz oprogramowania. Pełny tytuł standardu w stowarzyszeniu IEEE: Standard IEEE dla binarnej arytmetyki zmiennoprzecinkowej (ANSIIEEE Std 754-1985) Tytuł normy w międzynarodowej komisji elektrotechnicznej IEC: IEC 60559: 1989, arytmetyka zmiennoprzecinkowa binarna dla systemów mikroprocesorowych (IEC 559: 1989 - stare oznaczenie normy) W 2008 r. Stowarzyszenie wydało IEEE standard IEEE 754-2008, który zawierał standard IEEE 754-1985. 2. Krótki opis standardu. Oryginalne wydanie standardu: Standard IEEE dla binarnego punktu arytmetycznego zmiennoprzecinków Spis treści: 1985 Instytut Inżynierii Elektrycznej i Elektroniki, Inc 345 East 47th Street, Nowy Jork, NY 10017, USA standard zawiera 23 strony tekstu w 7 sekcjach i jeden z załączników: 1.Skope 1.1 Cele implementacji 1.2 Włączenia 1.3 Wyłączenia 2. Definicje 3.Formaty 3.1 Zestawy wartości 3.2 Formaty podstawowe 3.3 Formaty rozszerzone 3.4 Kombinacje formatów 4.Rounding () 4.1 Round do najbliższego 4.2 Zaokrąglenia bezpośrednie 4.3 Okrągła precyzja 5.Operacje 5.1 Wynik arytmetyczny 5.2 Przesunięcie kwadratowe 5.3 Konwersje formatów zmiennoprzecinkowych 5.4 Konwersja formatów zmiennoprzecinkowych i całkowitych 5.5 Okrągły numer zmiennoprzecinkowy do wartości całkowitej 5.6 Konwersja binarna dziesiętna 5.7 Porównanie 6.Infinity, NaNs i Zero zerowego 6.1 Nieskończoność Arithmetic 6.2 Operacje z NaN 6.3 Bit Znaku 7.Uwagi 7.1 Niepoprawna operacja 7.2 Podział według Zera 7.3 Przepełnienie 7.4 Unde rflow 7.5 Inexact 8.Traps 8.1 Trap Handler 8.2 Precedence A. Zalecane funkcje i predicates nbsp nbsp nbsp nbsp Niestety, IEEE ewoluował z międzynarodowej organizacji inżynieryjnej, która pierwotnie była organizacją handlową. Ta organizacja jest właścicielem praw autorskich do publikowania standardowego standardu IEEE754-1985. Więc jeśli chcesz przeczytać, z oryginalnym standardem, musisz kupić go przez około 80 lat. Jednak prawo rosyjskie pozwala mi wypowiedzieć się na temat nauczania tego standardu. W związku z tym, dalszy Ill dają arbitralną prezentację standardu i wyrażają swoją opinię na ten temat w celach szkoleniowych. Normalny IEEE 754-1985 określi: Zostanie znormalizowany jako pozytywne i ujemne liczby zmiennoprzecinkowe Jak reprezentować pozytywne i negatywne denormalizowane numery zmiennoprzecinkowe Jak reprezentować liczbę zero Jak specjalna wartość reprezentująca nieskończoność (Infiniti) Jak reprezentować specjalny (NaN lub NaN) Cztery tryby zaokrąglania IEEE 754-1985 definiuje cztery formaty liczb zmiennoprzecinkowych: Jednostronna precyzja (jednokierunkowa) 32-bitowa Podwójna precyzja (podwójnie precyzyjna) 64-bitowa Z pojedynczym (precyzyjnie rozszerzona precyzja) 79 bitów (zazwyczaj 80 bitów) 3. Podstawowe pojęcia w reprezentacji liczb zmiennoprzecinkowych. 3.1 Złożenie znormalizowanego formularza wykładniczego. Weźmy na przykład numer dziesiętny 155.625 Wyobraźmy sobie numer w znormalizowanej postaci wykładniczej: 1,55625872910 2 1,556258729exp 10 2 Liczba 1,556258729exp 10 2 składa się z dwóch części: mantyki M 1.55625 i wykładnika exp 10 2 Jeśli mantyza mieści się w przedziale 1 -2. 3.2 Przedstawienie denominowanej formy wykładniczej. Weźmy, na przykład, liczbę dziesiętną 155,625 Wyobraźmy liczbę denominowanej wykładniczej drogi: 0,155625872910 3 0,1556258729exp 10 3 Numer 0,1556258729exp 10 3 składa się z dwóch części: mantysę M 0,155625 i wykładnik exp 10 3 Jeśli mantyza mieści się w zakresie od 0,1 do 3. 3.3 Konwersja liczby dziesiętnej na binarny numer zmiennoprzecinkowy. Nasz problem zmniejsza się do dziesiętnych liczb zmiennoprzecinkowych w binarnym numerze zmiennoprzecinkowym w formie znormalizowanej wykładniczej. W tym celu rozwijamy podaną liczbę binarnych cyfr: 155,625 187292 7 087292 6 087292 5 187292 4 187292 3 087292 2 187292 1 187292 0 187292 -1 087292 -2 187292 -3 155,625 128 0 0 16 8 0 2 1 0,5 0 0,125 155,625 10 10011011,101 2 - liczba dziesiętnych i binarnych zmiennoprzecinkowych Niech otrzymany numer do znormalizowanego formularza w systemie dziesiętnym i binarnym: 1,556258729exp 10 2 1,00110111018729exp 2 111 W rezultacie mamy główne składniki znormalizowany wykładniczy numer binarny: Mantissa M1.0011011101 Exponent exp 2 111 4. Opis konwertujący liczby IEEE 754. 4.1 Transformacja znormalizowanych liczb binarnych w formacie 32-bitowym IEEE 754 Główną aplikacją w technologiach i formatach programowania była 32 i 64 bitów. Na przykład w języku VB przy użyciu typów danych pojedynczy (32-bitowy) i podwójny (64-bitowy). Rozważmy transformację dwójkowej liczby 10011011.101 w formacie single-precision (32-bit) IEEE Standard 754. Inne formaty liczb w IEEE 754 to powiększona kopia pojedynczej precyzji. Aby podać numer w formacie single-precision IEEE 754, powinien on dostarczyć go do znormalizowanego formatu binarnego. W 3, dokonaliśmy tej konwersji na numer 155.625. Rozważmy teraz, jako znormalizowany numer binarny jest konwertowany na format 32-bitowy IEEE 754 Opis transformacji w formacie 32-bitowym IEEE 754: Liczba może być lub -. Dlatego odrobinę odtworzyć znak: 0-dodatni 1-ujemny Ta najbardziej znacząca sekwencja bitów do 32 bitów. Następnie przejdź bity wykładników, przydziela to 1 bajt (8 bitów). Wystawcą może być, jako numer, ze znakiem lub -. Aby wyznaczyć znak wykładnika, a nie do wprowadzenia kolejnego znaku bitowego, należy dodać offset do wykładnika w bajt połowy 127 (0111 1111). Oznacza to, że jeśli nasza ekspozycja 7 (111 w binarnie) przesunęła wykładnik 7 127 134. A jeśli nasi wystawcy -7, wyrównali stoiska 127-7 120. Wykreślony wykładnik jest zapisywany w przydzielonych 8 bitach. Gdy jednak będziemy musieli uzyskać wykładnicze liczby binarne, po prostu odejmujemy 127 z tego bajtu. Pozostałe 23 bity na mantyzę. Jednak znormalizowana binarna pierwsza mantyska ma pierwszeństwo 1, ponieważ liczba mieści się w zakresie 1 Tabela pokazuje liczbę dziesiętną 155.625 w formacie 32-bitowym IEEE754: 001 1011 1010 0000 0000 0000 2 971 8776199584e292 Z powyższego, zważywszy, że większość liczb w formacie IEEE754 ma stabilny mały błąd względny: maksymalny błąd względny liczby to Single 2 -23 100 11,920928955078125e-6 Maksymalny błąd względny liczby Double 2 -52 100 7.5 Informacje ogólne o liczbie pojedynczych i podwójnych standardów IEEE 754. Tabela 3. Informacje o formacie bitowego 3264 w standardowej liczbie znaków ANSI IEEE Std 754-1985, bitowym przesunięciu wykładniczej (E), bitów pozostała mantysa (M), bity denormalized numer binarny znormalizowana binarna liczba denormalized liczba dziesiętnych F (-1) S 87292 (E -126) 8729 M2 23 F (-1) S 87292 (E -1022) 8729M2 52 znormalizowane liczba dziesiętnych F (-1) S 87292 (E-12 7) 8729 (1M2 23) F (-1) S 87292 (E-1023) 8729 (1M2 52) Abs. maks. numer błędu Rel. maks. denormy błędów. liczba Rel. maks. normy błędów. numer 2 -149 8776 1,401298468729e -45 2 -1074 8776 4,940656468729e -324 2 127 8729 (2-2 -23) 8776 3,402823478729e 38 2 1023 8729 (2-2 -52) 8776 1,797693138729e 308 8 Numery zaokrąglania w standardzie IEEE 754. W prezentowaniu liczb zmiennoprzecinkowych w standardzie IEEE 754 często występują liczby zaokrąglone. Standard zawiera cztery sposoby zaokrąglania liczb. Sposoby zaokrąglania liczb IEEE 754: Zaokrąglanie mające tendencję do najbliższej liczby całkowitej. Zaokrąglanie zmierza do zera. Zaokrąglanie zmierza do 8734 Zaokrąglanie zmierza do -8734 Tabela 3. Przykłady zaokrągleń do jednego miejsca dziesiętnego do najbliższej liczby całkowitej Jak zaokrągla się w przykładach z Tabeli 3. Kiedy konwertujesz liczbę, aby wybrać jeden ze sposobów zaokrąglania. Domyślnie jest to pierwszy sposób, zaokrąglając do najbliższej liczby całkowitej. Często w różnych urządzeniach używających drugiej metody - zaokrąglonej do zera. Przy zaokrąglaniu do zera po prostu wyrzuć pozbawione znaczenia liczby poziomów, więc jest to najłatwiejszy w implementacji sprzętu. 9. Obliczanie problemów spowodowanych używaniem standardowego standardu IEEE754. Standard IEEE 754 jest szeroko stosowany w inżynierii i programowaniu. Większość nowoczesnych mikroprocesorów jest produkowanych przy użyciu sprzętu do realizacji reprezentacji zmiennych rzeczywistych w formacie IEEE754. Język programowania i programator nie mogą zmienić tej sytuacji, nie istnieje przestrzeń rzeczywistej liczby w mikroprocesorze. Podczas tworzenia standardowej reprezentacji IEEE754-1985 rzeczywistej zmiennej w formie 4 lub 8 bajtów wydają się bardzo duże wartości, ponieważ ilość pamięci RAM MS-DOS wynosiła 1 MB. Program w tym systemie mógłby być użyty tylko 0,64 MB. W przypadku nowoczesnych systemów operacyjnych rozmiar 8 bajtów jest zerowy i jest nieważny, niemniej zmienne w większości mikroprocesorów są w formacie IEEE754-1985. Rozważmy obliczenia błędów, spowodowane użyciem liczb w formacie IEEE754. 9.1 Błędy związane z dokładnością reprezentacji liczb rzeczywistych w formacie IEEE754. To niebezpieczne zmniejszenie. Ten błąd jest zawsze obecny w obliczeniach komputerowych. Powodem jego wystąpienia jest opisany w pkt 7.4. -6 dla podwójnych 10 -14 Błędy bezwzględne mogą być znaczące, jak w przypadku pojedynczych 10 31 i podwójnych 10 292, które mogą powodować problemy z obliczeniami. Jeśli licznik próbek na papierze, odpowiedź brzmi: 1. Błąd bezwzględny to 7. Dlaczego błędna odpowiedź Numer 123456789 w pojedynczym raporcie o błędzie 4CEB79A3hex (ieee) 123456792 (dec) jest 3 Numer 123456788 w pojedynczym 4CEB79A2hex (ieee) 123456784 (dec) bezwzględne zgłaszanie błędów jest -4 Błąd względny w początkowej liczbie około 3,24 e-6 W rezultacie jeden operacyjny błąd względny wyniku wyniósł 800, tj. Wzrósł o 2,5 e8 razy. To, co nazywam, jest niebezpieczne. tj. katastrofalny spadek dokładności w operacji, w której wartość bezwzględna wyniku jest znacznie mniejsza niż w przypadku wszystkich zmiennych wejściowych. W rzeczywistości precyzja błędów reprezentacji najbardziej nieszkodliwej w obliczeniach komputerowych i zazwyczaj wielu programistów nie zwraca uwagi. Niemniej jednak, mogą być bardzo frustrujące. 9.2 Błędy związane z niewłaściwym przymusem typów danych. Dziwny błąd. Błędy te wynikają z faktu, że pierwotny numer zgłoszony w formacie pojedynczym i podwójnym w formacie zwykle nie równym sobie. Na przykład: oryginalny numer 123456789,123456789 Pojedynczy: 4CEB79A3 123456792,0 (dec) Podwójne: 419D6F34547E6B75 123456789,12345679104328155517578125 Różnica między kwotą pojedynczą i podwójną: 2,87654320895671844482421875 Oto przykład VB: Błąd względny wyniku to: 8734 (nieskończoność) Ten błąd nazywany jest zerem zanieczyszczonym. Jeśli zmienne prowadzą do tego samego typu, ten błąd nie będzie miał miejsca. Z tego względu zmienne i pośrednie wyniki obliczeń mają być przenoszone na ten sam typ danych. Na przykład wymóg pokazania tego samego typu opisanego w standardowym języku C do ISO IEC 9899: 1999. Zwróć uwagę na fakt, że nie wystarczy tylko, aby wszystkie oryginalne dane były przechowywane w jednym typie. Konieczne, aby wyniki operacji pośrednich były takie same. Oto przykład błędu w wyniku pośrednim: tutaj pojawia się błąd, ponieważ pośredni wynik 1 3 w linii c c-1 3 będzie typu podwójnego, a nie pojedynczego. Aby pozbyć się błędu, musisz podać wynik pośredni dla typu pojedynczego operatora przy użyciu odlewu CSng. Przykład przynoszący typ danych GNU C, wysłany przez Gregory Sitkarevym: W drugiej wersji widać, że podział stałych w wyniku pośrednim jest podawany typu float (pojedyncza precyzja w C). Te opcje zostały skompilowane i wykonywane przy użyciu GNU C. Jeśli skompiluj i wykonasz powyższe opcje są wyświetlane na VC (Visual Studio), wyniki zostaną odwrócone. Oznacza to, że opcja 2 będzie wynikiem -9.934108, a opcja 1 Wynik: 0.000000. Stąd może być rozczarowujące stwierdzenie, że wynik obliczeń może zależeć od typu i wersji kompilatora. W takim przypadku możemy założyć, że kompilator VC automatycznie podaje typy zmiennych, a próba przymusowego wprowadzenia tego samego typu nie powiedzie się. Jeśli opcja 1 (bez obsady) spotka się ze zmienną podwójną precyzją (podwójna), to błąd nie przyniesie danych i wynik 0.000000 Więc w większości przypadków pozbycie się danych oddanych jest po prostu użycie typu danych podwójnie i zapominać o rodzaju pojedynczego (pływaka). Błędy obliczeniowe spowodowane nieprowadzeniem typów danych, które nazywam błędami dzikimi, odnoszące się do ignorancji standardów i teorii programowania (tzn. Z niską podstawową edukacją). 9.3 Błędy spowodowane przesunięciem mantyki. Okrągłe otwory. Błędy te są związane z utratą dokładności wyniku w niekompletnych numerach przecięcia mantissasa na osi rzeczywistej. Jeśli liczby mantyki nie przecinają się na prawdziwą oś, dodawanie i odejmowanie między tymi liczbami jest niemożliwe. Przykładowo, przyjmujemy liczbę pojedynczą: 47FFFFFF 131071,9921875 (dec) W systemie binarnym liczba ta wygląda następująco: 11111111111111111, 1111111 Pokazujemy niektóre operacje komputerowe dodania, a liczba ta w formacie pojedynczych znaczących cyfr w mantysa o numerze binarnym w formacie Pojedynczy nie większy niż 24 Czerwony oznacza liczby przekraczające ten limit i nie są uwzględniane w formacie Pojedynczy 1. dodatek z tym samym numerem (przesunięcie błędów 0.0). 2. dodanie do liczby mniejszych 2-krotnie (przesunięcie błędów - 0.00390625). 3. dodatek z mniejszą liczbą 2 23 razy (przesunięcie błędów - 0.007812). 4. dodatek z mniejszą liczbą 2 24 razy (przesunięcie błędów - 0.007812). W tym ostatnim przypadku mantysę liczb rozdzielono, a operacje arytmetyczne z tymi liczbami są bez znaczenia. Jak widać z powyższych przykładów błąd przesunięcia występuje, jeśli początkowe znormalizowane liczby są różnymi wykładnikami. Jeśli liczby różnią się o więcej niż 2 23 (dla pojedynczego) i 2 52 (dla podwójnego), dodawanie i odejmowanie między tymi liczbami nie jest możliwe. Maksymalny wynik błędu względnego operacji wynosi około 5,96 e-6, który nie przekracza względnego błędu reprezentacji numeru (p.9.1). Chociaż błąd względny jest tutaj w porządku, istnieją inne problemy. Najpierw pracuj z liczbami tylko w wąskim zakresie rzeczywistej osi, gdzie mantyza przecina się. Po drugie, dla każdego źródła granicy pętli o nazwie Cykliczny otwór. Pozwolę sobie wyjaśnić, jeśli istnieje cykl, w którym do sumy dodano pierwotny numer, jest liczbowy limit kwoty dla tego numeru. Oznacza to, że kwota osiągająca pewien rozmiar przestaje rosnąć, dodając ją do pierwotnego numeru. Oto przykład cyklicznych otworów w automatycznym systemie sterowania: istnieje zakład farmaceutyczny produkujący tabletki o wadze 10 mg. Składa się z: maszyny do formowania, zbiornika o pojemności 500 kg, maszyn do pakowania, automatycznego systemu sterowania. Maszyna do formowania podaje się do bunkra na 10 tabletek naraz. Maszyna do napełniania przyjmuje jedną tabletkę. System automatycznej kontroli uwzględnia tabletki otrzymane w lejce formującej i wyjęte z maszyn pakujących w bunkier. Oznacza to, że jest program pokazujący produkcję leja wypełniającego w kg. Gdy w bunkrze będzie ponad 500 kg maszyna do formowania produktu stoi na przerwie, zawiera kod w bunkrze będzie 200 kg produktu. Maszyna do napełniania zatrzymuje się, jeśli bunkier jest mniejszy niż 10 kg i rozpocznie się, gdy bunkier będzie większy niż 100 kg. Oba samochody mogą zatrzymać się z czasem, aby służyć, nie zależąc od siebie (dzięki bunkra). Oto przykład cyklicznych otworów w automatycznym systemie sterowania: istnieje zakład farmaceutyczny produkujący tabletki o wadze 10 mg. Składa się z: maszyny formującej, zbiornika na 500 kg, maszyn pakujących, jak wiesz, działa w pętli bez końca. Załóżmy, że jednodniowa maszyna do napełniania była za długa i bunkier wypełniony do 300 kg. Co się dzieje po włączeniu Uproszczony przykład zarządzania cyklem programu: W tym przykładzie napełniacz podnosił się z kosza 100 kg produktu, a ciężary produktów w kosze samowyładowczej nie uległy zmianie. Dlaczego nie zmieniać Ponieważ mantyza numer 300 i 0,00001 rozłączny format. Następnie przynieś masę maszynek do formowania do 500 kg i przestań. Maszyna napełniająca weźmie wszystkie tabletki z leja samowyładunkowego, a także zatrzymuje się. Program wyświetli wagę 500 kg w bunkrze. Chodźcie do specjalistów, testuj czujniki, przewody, komputer i powiedz, że program wisiał. Ale program nie powiesza się, trwa płynnie, a każda kontrola potwierdzi to. Po prostu liczba trafień 0.0001 w cyklicznej dziurze i wychodzących z niego nie może. W rezultacie mieliśmy szczęście, że to był zakład farmaceutyczny, a nie Sayan-Szushenskaya GES. W rzeczywistości doświadczony programista nigdy nie dokonałby cyklicznego odejmowania (lub sumy) w ten sposób. Ten przykład jest fikcyjnym celem, a więc nie można go rozważyć, chociaż w zakresie matematyki są bez zarzutu. Ten błąd jest typowy dla matematyków i początkujących programistów. Powiedziałbym, że głównym zadaniem programisty jest walka z błędami, ale nie w matematycznym rozwiązaniu problemu. Oto przykład prawidłowego rozwiązania tego problemu dzięki uprzejmości Sitkarevym Gregory: poprzedni przykład pochodzi z prawdziwego pakietu przemysłowego. Dla jasności uproszczenie powyższego przykładu. Jak widać z tego przykładu, programista musi obliczyć błąd wyniku w każdym cyklu, aby go uwzględnić w następnym cyklu. Należy zauważyć, że programista powinien być absolutnie gotowy, aby uzyskać podstawowe pojęcia matematyki nie może być spełniony w obliczeniach w formacie IEEE754. Na przykład w tych obliczeniach zazwyczaj nie jest wykonywane reguły łączności algebraicznej (a b) a (a c) b. Niestety, w dzisiejszej edukacji podstawowej, która otrzymuje bardzo mało uwagi. 9.4 Błędy z powodu zaokrągleń. Brudne zero. Gdy obliczenia komputerowe mogą rozróżnić dwa rodzaje zaokrągleń: 1. Wynik operacji arytmetycznej jest zawsze zaokrąglany. 2. Wyjście i wprowadzenie rzeczywistej liczby w polu Okna są zaokrąglone. W pierwszym przypadku zmienna jest zaokrąglana do jednego z czterech typów zaokrąglania IEEE754, domyślne zaokrąglanie występuje do najbliższej liczby całkowitej. W tym przypadku zmienna otrzymuje nową zaokrągloną wartość. W p.9.2 rozważaliśmy dodanie dwóch identycznych liczb: 1. Dodanie z tym samym numerem (przesunięcie błędów 0.0). Tutaj wynik dodania dwóch liczb jest absolutnie dokładny, ale wynik był zaokrąglany przez mikroprocesor. W rezultacie do dokładnego wyniku dodano błąd zaokrągleń. Ogólnie rzecz biorąc, błąd zaokrąglania znajduje się w dokładności liczb. W drugim przypadku zmienna nie zmienia jej znaczenia, tylko w oknie systemu Windows wyświetla zaokrągloną wartość liczb rzeczywistych. Okazuje się, że oryginalna zmienna i wyświetlanie jej w systemie Windows to inny numer. To nie wina formatu IEEE754, jest to błąd systemu Windows. Pojedyncza zmienna jest wyświetlana w znaczących cyfrach systemu Windows 7 zaokrąglonych do najbliższej liczby całkowitej. Pole 3DFCD6EA 0,12345679104328155517578125 jest wyświetlane jako 0,1234568 Dla zmiennych typu Dwukrotnie w polu systemu Windows wyświetlane są 15 znaczących cyfr zaokrąglonych do najbliższego numeru całkowitego. 3FBF9ADD3746F67D 0,12345678901234609370352046653351862914860248565673828125 wyświetlane jako 0.123456789012346 Pytanie, jak ważną zmienną kiedy wchodzimy do okna systemu Windows 0,123456789012346 Ta wartość będzie równa tej liczbie: 3FBF9ADD3746F676 0,1234567890123459965590058118323213420808315277099609375 Oznacza to, że wartość 3FBF9ADD3746F67D na ogół nie można wstawić bezpośrednio do kod programu. Ale możemy oszukiwać i wkleić do x 0.123456789012346 1 E-16. Powstała zmienna będzie równa 3FBF9ADD3746F67D (jest to stosowane w przykładzie z zerowym zerem) lub komputer PC przez okno jest liczbą niemożliwą. W wyniku działania Windows pojawia się wiele nieprzyjemnych sytuacji. 1. Nie masz możliwości technicznych wyświetlania lub wprowadzania dokładnych wartości. zmiennych w oknach, które same w sobie są bardzo smutne. 2. Powstanie poważnych błędów, takich jak brudny zerowy. Zanieczyszczenie zera jest takie, gdy użytkownik lub program zakładają, że zmienna nie jest równa zeru zero Bardzo często ten błąd występuje w interfejsie operatora maszyny. Na przykład po zresetowaniu wagi programów do pakowania. Wynik tego programu w powyższym przykładzie W wyniku tego zmienna, którą operator uważa zero zero jest równa Błąd względny wyniku to nieskończoność. W operacjach porównania logicznego, które nie są zerowe, mogą przekierować wykonanie programu do innej gałęzi algorytmu. 9.5 Wskaźnik błędu przy numerach normadenorma. Liczba zabójców. Błędy te występują podczas pracy z numerami zlokalizowanymi na granicy znormalizowanej reprezentacji liczb denormalizowanych. Są związane z różnicami w reprezentacji liczb w formacie IEEE754 i przesyłają różne formuły w rzeczywistych formatach IEEE754. Oznacza to, że urządzenie (lub oprogramowanie) powinno używać różnych algorytmów w zależności od położenia liczby rzeczywistej w formacie liczbowym. Ponadto, prowadzi to do komplikacji urządzeń i algorytmów, nadal występuje niepewność strefy przejściowej. Niepewność strefy przejściowej polega na tym, że standard nie definiuje konkretnej wartości granicy przejściowej. W istocie, przejście jest granica między dwiema liczbami rzeczywistymi: Ostatni nieznormalizowane numer 000FFFFFFFFFFFFF: Dokładna wartość dziesiętną tego numeru: 2,2250738585072008890245868760858598876504231122409594654935248025624400092282356951787758888037591552642309780950 4343120858773871583572918219930202943792242235598198275012420417889695713117910822610439719796040004548973919380791 9893608152561311337614984204327175103362739154978273159414382813627511383860409424946494228631669542910508020181592 6642134996606517803095075913058719846423906068637102005108723282784678843631944515866135041223479014792369585208321 5976210663754016137365830441936037147783553066828345356340050740730401356029680463759185831631242245215992625464943 0083685186171942241764645513713542017221703137049658321015465406803539741790602258950302350193751977303094576317321 0852507299305089761582519159720757232455434770912461317493580281734466552734375e-308 i pierwszy znormalizowany numer 0010000000000000: va Dokładne dziesiętne lue tej liczby: 2,2250738585072017830902327173324040642192159804623318305533274168872044348139181958542831590125110205640673397310 3581100515243416155346010885601238537771882113077799353200233047961014744258363607192156504694250373420837525080665 0616658158948720491179968591639648500635908770118304874799780887753749949451580451605050915399856582470818645113537 9358049921159810857660519924333521143523901487956996095912888916029926415110634663133936634775865130293717620473256 3178148566435087212282863764204484681140761391147706280168985324411002416144742161856716615054015428508471675290190 3161322778896729707373123334086988983175067838846926092773977972858659654941091369095406136467568702398678315290680 984617210924625396728515625e-308 Ponieważ granica jest liczbą rzeczywistą, jego precyzyjnego może być ustawiony na nieskończoność i urządzenia cyfrowego lub programu nie może mieć trochę dotyczący decyzji obejmować jakiś zakres numer. Na przykład błąd 53632 dla PHP, który spowodował panikę na początku 2017 r. Lt; lt; lt; lt; lt; lt; bgt; lt; lgtgt; Inne numery z tego zakresu problemów nie spowodowane (2.2250738585072009e-308, 2.2250738585072017e-308, 2.2250738585072017e-308) Zgłoś błąd otrzymany 30.12.2017, 10.01.2017 ustalony przez dewelopera. Ponieważ PHP jest preprocesorem jest używany przez większość serwerów, a następnie dowolnej sieci użytkowników w ciągu 10 dni, był w stanie zamknąć dowolnego hosta. Jak napisać programiście, że błąd działa tylko w systemach 32-bitowych, ale jeśli zwiększysz dokładność granicy, myślę, że również systemy 64-bitowe zawiesiły się (nie zweryfikowano). Powód paniki jest jasny: każdy użytkownik, na pewnym poziomie staranności i wiedzy, miał możliwość zmniejszenia większości zasobów informacyjnych na naszej planecie w ciągu dziesięciu dni. Nie chciałbym - spowodowałoby większą liczbę przykładów takich liczb i takich błędów. 10 Ostateczna część Z powyższego wynika jasno, że pogląd, że wynik zmiennoprzecinkowy nie przekracza względnego błędu w zgłaszaniu największej liczby jest fałszywy. Błędy wymienione w punkcie 9 są dodawane razem. Błędy takie jak brudna i niebezpieczna zerowa redukcja mogą powodować niedopuszczalne błędy obliczeniowe. Szczególna uwaga w programowaniu obliczeń komputerowych programista powinien zapłacić za wyniki bliskie zeru. Niektórzy eksperci uważają, że format liczb stanowi zagrożenie dla ludzkości. Możesz przeczytać o tym w artykule IEEE754-tick zagraża ludzkości Chociaż wiele faktów w tym artykule nadmiernie udokumentowane, a być może błędnie interpretowane, ale problem jest właściwie odzwierciedlany filozoficznie. Nie jestem dramatyzacją obliczeń na standardowym IEEE754. Standard funkcjonuje od 1985 roku i w pełni wchodzi w standard IEEE754-2008, co zwiększa dokładność obliczeń. Jednak dzisiejszy problem niezawodności jest bardzo pilny, a standardowe zalecenia IEEE754-2008 i ISO nie rozwiązały tego problemu. Myślę, że w tym obszarze potrzebna jest innowacyjna idea, której niestandardowy standard IEEE754-2008 niestety nie posiada. Innowacyjne pomysły pochodzą zazwyczaj. Główne innowacyjne pomysły na świecie zostały wykonane przez amatorów (podobnie myślących ludzi, a nie za pieniądze). Uderzającym przykładem tej sytuacji było wynalezienie telefonu. Kiedy nauczyciel szkół Alexander Graham Bell (Alexander Graham Bell) wyjechał z patentem na wynalezienie telefonu do prezesa firmy Western Union, która jest właścicielem transatlantyckiego połączenia kablowego z ofertą zakupu patentu na wynalezienie telefonu, nie został wydalony - nie. Prezes tej firmy zaoferował rozważyć tę kwestię doradztwo ekspertów w dziedzinie telegrafii, w skład którego wchodzili specjaliści i naukowcy z dziedziny telekomunikacji. Eksperci uznali, że ten wynalazek jest bezużyteczny w dziedzinie telekomunikacji i jest daremny. Niektórzy eksperci nawet napisali raport, że tsirkachestvo i szarlatanizm Alexander Graham Bell, wraz z jego teściowym, postanowił samodzielnie promować swój wynalazek. Po około dziesięciu latach giganta telekomunikacyjnego Western Union Co. praktycznie wyeliminowała telefoniczną firmę z zakresu technologii telekomunikacyjnych. Dzisiaj widzimy w wielu rosyjskich oknach, że Western Union, która zajmuje się przenoszeniem pieniędzy na całym świecie, a kiedyś była międzynarodowym gigantem telekomunikacyjnym. Możemy stwierdzić, że opinie ekspertów w dziedzinie innowacyjnych technologii są bezużyteczne Jeśli myślisz, że od czasu wynalezienia telefonu (1877) w umysłach ludzi coś się zmieniło, jesteś niewłaściwy. Jeśli naukowcy (którzy wymyślają nowe) i profesjonaliści (którzy wiedzą na temat korzystania z dobrze znanego) nie mogą rozwiązać problemu, potrzebujesz innowacji. Odnośniki do nowych pomysłów w dziedzinie reprezentacji liczb rzeczywistych w sprzęcie: 1. Approksimetika 2. Jeśli znasz inne innowacyjne pomysły w dziedzinie reprezentacji liczb rzeczywistych, z przyjemnością znajdziemy linki do tych źródeł. Sugerowałbym przedstawić rzeczywiste liczby jako punkt stały. Aby wyświetlić pełny zakres liczb Podwójnie wystarczy, aby zmienna składała się z 1075 bitów części całkowitej i 1075 bitów części ułamkowej, tj. Około 270 bajtów na zmienną. W tym przypadku wszystkie numery zostaną przedstawione z taką samą dokładnością bezwzględną. Możesz pracować z liczbami w całym zakresie rzeczywistej osi, tzn. Możliwe jest podsumowanie dużej liczby małych liczb. Numery kroków na osi rzeczywistej są jednorodne, tj. Oś rzeczywista jest liniowa. Typ danych będzie tylko jeden, tzn. Nie potrzebują całych, rzeczywistych i innych typów. Tutaj problemem jest realizacja rejestrów wielkości mikroprocesorów wynoszących 270 bajtów, ale nie jest to problem dla nowoczesnej technologii. Aby napisać p.9 musiałem stworzyć program, który reprezentuje liczbę jako zmienną do stałego punktu, długie 1075.1075 bajtów. Jeśli liczba może być reprezentowana jako ciąg znaków ASCII, tj. Jeden symbol to jedna cyfra. Wystarczy napisać wszystkie operacje arytmetyczne za pomocą łańcuchów znaków ASCII. Ten program jest podobny do obliczeń papieru. Ponieważ mikroprocesor o zdolności matematycznej nie jest używany, powoli powiedziała. Dlaczego to zrobiłem Nie mogłem znaleźć programu, który mógłby dokładnie reprezentować liczbę formatów IEEE754 w formie dziesiętnej. Ja też nie znalazłem programu (chociaż na pewno mają to, co nie ma wątpliwości), gdzie można wpisać w polu 1075 znaczących cyfry dziesiętne. Tutaj na przykład tylko wartość dziesiętną liczby podwójnej 7FEFFFFFFFFFFFFF: 17976931348623157081452742373170435679807056752584499659891747680315726078002853876058955 863276687817154045895351438246423432132688946418276846754670353751698604991057655128207624 549009038932894407586850845513394230458323690322294816580855933212334827479782620414472316 8738177180919299881250404026184124858368,0 Można użyć v.1.0 nbsp IEEE 754 uczyć i oceniać błędy podczas pracy z liczb rzeczywistych danych w formacie IEEE 754. Referencje: 1. Standard IEEE dla arytmetyki zmiennoprzecinkowej binarnej. Copyright 1985 by Institute of Electrical and Electronics Engineers, Inc. 345 East 47th Street, Nowy Jork, NY 10017, USA Podziękowania: Sitkarevu Grigory (sitkarevkomitex. ru, sinclair80gmail). Aby uzyskać pomoc w tworzeniu artykułu. Archiwum opinii z komentarzami nbsp Zobacz nbspnbsp (Wyślij opinię na e-mail: infosoftelectro. ru) Jak reprezentować 0.148 2 w znormalizowanej arytmetycznej liczbie zmiennoprzecinkowej w formacie (0.148) (0.00100101111). 2 Przesuń 3 bity w lewo aby normalizować (1.00101111) 2 2. Wynalazek 1164 (75) (1001011) 2 i Mantissa (01001111) 2. Tak więc reprezentacja zmiennoprzecinkowa jest (0100101100101111) 2 (4B2F) Reprezentacja A Ale jeśli przechowujemy denormalizowaną mantyzę w 8-bitowym rejestrze, wtedy nie zapisano ostatnich trzech 1s, a mantysa znów znów znów (0.00100101) 2 (1.00101000 ) 2 przez wstawienie 3 0s zamiast 1s. Procesor bierze pod uwagę denormalizowane bity mantyki poza 8 bitów lub też zaokrągla to, co jest poprawne: A lub B Czy przechowuje mantyzę w stałej reprezentacji punktowej Jak to wszystko działa Uwagi dotyczące konwersji binarnej Te notatki zawierają więcej informacji, niż to jest potrzebne do MGF 1107. Studenci MGF 1107 mogą ignorować wszystko na temat frakcji binarnych, binarnej wersji notacji naukowej i szesnastkowych, gdy czytasz co poniżej. Używamy tylko binarnych liczb całkowitych w MGF 1107. Binarne do konwersji dziesiętnej Jest to dokonywane przez zastosowanie definicji wartości miejsca dla liczby binarnej, oceniając każdą z dziesięciu. Na przykład przekonwertujemy 1001 dwa z binarnego na dziesiętny w następujący sposób: to jest 9 dziesięć. Większość osób uważa to za najprostsze z tych dwóch konwersji. Frakcje są traktowane z ujemnymi wykładnikami dla każdej ułamkowej wartości miejsca, podobnie jak w przypadku liczb dziesiętnych, więc przekształcamy 0.11 dwóch z binarnego na dziesiętny, rozpoznając, że daje 0,75 dziesięć. Praca domowa MGF 1107 nie obejmuje przykładów zawierających frakcje binarne. Dziesiętna do konwersji binarnej Część całkowita jest otrzymywana (od prawej do lewej) przez powtarzane dzielenie o dwa (które przesuwa punkt binarny na lewo), zachowując resztę jako następną cyfrę binarną i używając ilorazu całkowitego dla następnego kroku . Zatrzymujemy się, gdy iloraz jest równy zero. (Najprostszym sposobem uzyskania części całkowitej jest użycie funkcji konwersji Hexa kalkulatora i przeliczanie szesnastkowe na binarne, ale nie używamy kalkulatorów w tym urządzeniu). Część frakcyjna jest uzyskiwana (teraz działa od lewej do prawej) przez powtórzone pomnożenie przez dwa (przesuwanie punktu binarnego na prawo), zachowując całkowitą część jako następną cyfrę binarną i używając części frakcyjnej do następnego kroku. Nie ma prostych skrótów dla ułamkowej części, ale uważaj na powtarzalny wzór. Możemy zapisać wynik w postaci znormalizowanej liczby binarnej zmiennoprzecinkowej z konwencją, że mantyza (significand) wynosi od 1 do 2 - czyli mantysa ma postać 1.ffffff. 1. Konwersja 11-10 na binarne: Liczba całkowita jest konwertowana przez i wynosi 1011 dwa. (Jest to 1.011 x 2 3 jako znormalizowany numer zmiennoprzecinkowy). 2. Konwersja 5,75 dziesięć na binarne: część całkowita jest znaleziona przez i wynosi 101 dwa. Ułamkową część można znaleźć, więc numer jest 101.11 dwa. (Jest to 1.0111 x 2 2 jako znormalizowany numer zmiennoprzecinkowy). 3. Zmienić 0,1 do dziesiętnego na binarny: część ułamkową znajduje się w taki sposób, że liczba jest równa 0.0001100110011. Dwójka (jest to numer 1.10011001. x 2 -4 jako znormalizowany numer zmiennoprzecinkowy). Dziesiątki szesnastkowe Dziesiętne - szesnastkowe - tablica binarna W latach 50. ILLIAC został zbudowany na Uniwersytecie Illinois (Urbana-Champaign) przy użyciu seksualnego numer systemu. Jednak liczyli. 8, 9, K, S, N, J, F, L zamiast używać. 8, 9, A, B, C, D, E, F, jak dzisiaj. Wybierali te litery (zapamiętane przy użyciu pamięci mnogiej), ponieważ okazały się one najbardziej wygodne, gdy konwertowały teletekst używany do wykrawania taśmy papierowej używanej do IO. (To informacja z ramki J. Sutherlanda, emerytowanego profesora matematyki z Michigan State University, wczesnego programisty klonu ILLIAC z 1957 roku, znanego jako MISTIC, z których oba należą do rodziny komputerów ORDVAC) (na margines: fani 2001: Odyseja kosmiczna przypomina, że ​​komputer Champion-Urbana zbudowany został w oparciu o komputer HAL-9000, co odzwierciedla historyczną rolę, jaką Univ Illinois miał we wczesnym rozwoju komputerów przy konstruowaniu ILLIAC. że firma HAL ponosi rotę 25 IBM, numer seryjny odzwierciedla sekwencję stosowaną przez Control Data, której maszyny serii 6000 były superkomputerem w połowie lat sześćdziesiątych, kiedy dokonano tego w 2001. Cray-1 byłby maszyną serii 8000, ale CDC wybrał projektowanie gwiazd, które doprowadziły do ​​Cyber-205 i Cray stworzyło własną firmę Kubrick wyobrażał sobie prawo do wprowadzenia 9000 maszyn serii, które mogłyby mówić na początku lat 90-tych - HAL urodził się w 11292, ale ktoś zapomniał myszy). Ten materiał jest 169 Copyright 2000, autorstwa James Carr.

Comments

Popular posts from this blog

Co nie inwestuje opcje zapasów średnia

W pełni nabywane Co to jest w pełni sprawny Całkowicie nabytych jest osoby prawo do pełnej kwoty pewnego rodzaju świadczenia, najczęściej świadczeń pracowniczych, takich jak opcje na akcje. podział zysków lub świadczenia emerytalne. Świadczenia, które muszą być w pełni spłacane, często przysługują pracownikom każdego roku, ale stają się własnością pracowników wyłącznie zgodnie z harmonogramem nabywania uprawnień. Przekazywanie uprawnień może odbywać się według stopniowego harmonogramu, na przykład 25 rocznie, lub zgodnie z harmonogramem klifowym, w którym 100 świadczeń przysługuje w ustalonym czasie, na przykład cztery lata po dacie przyznania nagrody. ZAKOŃCZENIE W DÓŁ W pełni sprawne Aby w pełni zostać nabytym, pracownik musi osiągnąć próg określony przez pracodawcę. Najczęściej wymaga to długotrwałości zatrudnienia, a świadczenia są przyznawane na podstawie czasu, jaki pracownik spędził z firmą. Podczas gdy fundusze wniesione przez pracownika do pojazdu inwestycyjnego, takie jak 401

Btmm forex trading

Day Trading Forex Live 8211 Dowiedz się o handlu Pro Forex Strategie przez Sterling Suhr 25 Comments Osobiście czuję się tak jak Ty i ja jesteśmy bardzo podobni. Prawdopodobnie zacząłeś na rynku forex tak samo, jak ja, z tym samym marzeniem dnia handlowego forex życia i finansowej wolności. Heck, pewnie kupiłam te same produkty handlowe. Czy pamiętasz uczucie, jakie miałeś, gdy kupiłeś te pierwsze kilka produktów, które na pewno zrobię? Gdybym podsumował to w jednym słowie, to byłaby nadzieja. Nadzieja, że ​​nigdy nie będę pracować ponownie, nadzieja na finansowo wolne, nadzieja na pieniądze nigdy nie jest martwić. Niestety dla mnie, a prawdopodobnie dla większości czytania, rzeczy nie zrobiły się w ten sposób. Teraz I8217m nie będzie siedzieć tutaj i harfować, jak źle produkty na rynku forex, a raczej I8217m po prostu trafi do problemu i jak go o tym naprawić I8217d jak zapytać cię tu i teraz, aby 8220zaprawić swoją niedowierzanie8221 . To, co mam na myśli, to odcięcie odrobiny mózgu,

Opcje handlu trendami

Top 10 Poradników Tradingowych dla Najlepszych 10 najlepszych porad dotyczących kupowania i sprzedaży opcji, których się nauczyłem i które MUSZĄ wiedzieć zanim zaczniesz handlować połączeniami i kupami. Opcje handlowe Porada 5: Kiedy handlujesz opcjami kupna i sprzedaży, trend bazowy jest twoim przyjacielem. Nie walcz z nim Trend jest Twoim przyjacielem jest popularnym aksjomatem, który przeżywają zarówno inwestorzy giełdowi, jak i inwestorzy opcji. Jeśli akcja jest w trendzie wzrostowym, nie walcz z nią i spodziewaj się, że cena akcji będzie rosła. Podobnie, jeśli akcje znajdują się w trendzie spadkowym, nie próbuj wybierać dolnej granicy - oczekuj, że cena akcji będzie spadać. Ponieważ opcje kupna i kupowania polegają na odgadywaniu kierunku podstawowego kapitału, inwestorzy opcji MUSZĄ identyfikować trend giełdowy przed opcjami wymiany. Powiedzenie "Trend jest twoim przyjacielem" jest wytyczną, a nie sztywną zasadą. Oznacza to, że wszystkie inne czynniki na bok, spodziewaj