Friday 24 November 2017

Nadmiar 128 binarnych opcji


Podpisany Int: Notacja BiasExcess W nadpisanym tekście można określić dwa parametry: liczbę bitów, N i wartość stronniczości, K. W SM i 1C znajduje się tylko jeden parametr: liczba bitów. Na przykład niech K 5 (w 3 bitych) i masz nadmiar 5 reprezentacji, która przyporządkowuje tysiące do -5 i daje 111 równe 2. W rzeczywistości, nadmiar K reprezentuje mapy 0 N do - K, i 1 N do - K 2N - 1. Jeśli wybierzesz K 2 N - 1. bit znaku zostanie odwrócony, przy czym 1 w MSb oznacza wartość dodatnią, a 0 oznacza wartość ujemną. Z nadmiarem (lub stronniczości) reprezentacji, cant można dodać przy użyciu unsigned int add sprzętu. Potrzebny jest specjalny obwód, aby wykonać dodatek. Ten wykres zakłada nadwyżkę reprezentacji K. Liczba wartości Baza 10 do Nadmiar Dodać nadmiar do numeru dziesięć podstawy. Konwertuj wynik dziesięć numerów na unsigned binary (UB). Nadmiar do bazy 10 Konwertuj numer binarny na dziesięć, używając unsigned binary (UB) reprezentacji. Odejmij nadmiar. Łatwo zauważyć, że konwersja do iz nadmiaru reprezentuje operacje odwrotne. Dlaczego ExcessBias jest inny? Inne podpisane reprezentacje, które widziałem: SM, 1C i 2C wszystkie równomiernie podzielili liczbę ujemnych i nieujemnych wartości. W zasadzie można to zrobić również z nadmiarem reprezentacji. Ponieważ jednak nadmiarowa reprezentacja K przy użyciu N bitów ma dwa parametry, K i N, możesz wybrać K niezależnie od tego, co chcesz. Możesz mieć więcej pozytywnych liczb niż negatywnych, a nie zero itd. Ponieważ nadmiarowa reprezentacja K wykorzystuje dwie zmienne (K i N), dowolny sprzęt przeznaczony do wykonania dodatku w tej reprezentacji zależy od zarówno K, jak i N. Na szczęście, sortowanie wartości w nadmiarze zależy tylko od N. Podobnie jak w przypadku 2C, nadmierna reprezentacja ma najbardziej, jeden zero. Można jednak wybrać K, więc nie zero (wybrać odpowiednio duży K). W przeciwieństwie do innych podpisanych reprezentacji int można porównywać wartości w nadmiarze reprezentacji przy użyciu unsigned porównania. Jednak większość ludzi lubi raczej dodawać poprawnie do porównania, dlatego preferuje się nadmiarową notację 2C. Nadmiar notacji nie znajdzie zastosowania w reprezentacji zmiennoprzecinkowej, jednakże dlatego studiujemy ją. Floating Point Wprowadzenie int i unsigned int są przybliżeniami do zbioru liczb całkowitych i zbioru liczb naturalnych. W przeciwieństwie do int i unsigned, zestaw liczb całkowitych i zestaw naturalnych liczb jest nieskończony. Ponieważ zestaw int jest skończony, istnieje maksymalna int i minimalna int. Inty są również ciągłe. Oznacza to, że między wartością minimalną i maksymalną int nie ma wartości brakujących. Zestaw prawidłowych ints jest skończony. Dlatego minimalna i maksymalna int. ints są również ciągłe. Oznacza to, że nie ma brakujących liczb całkowitych pomiędzy minimalną i maksymalną int. Ma też inną kluczową cechę ints, która nie pojawia się w zbiorze liczb całkowitych. ints mają podstawową reprezentację. Reprezentacja to liczby binarne. Zestaw liczb całkowitych jest często reprezentowany jako liczby dziesiętne 10, ale często jest to bardziej abstrakcyjne. Oznacza to, że zestaw jest niezależny od jego reprezentacji (tzn. Możemy reprezentować zestaw liczb całkowitych w jakikolwiek sposób). Jakie problemy pojawiają się przy próbie opracowania reprezentacji danych liczb zmiennoprzecinkowych. Okazuje się, że te problemy są bardziej skomplikowane niż reprezentujących liczby całkowite. Chociaż większość ludzi zgadza się, że UB i 2C są sposobami reprezentowania liczb całkowitych niepodpisanych i podpisanych. Reprezentowanie prawdziwych liczb było tradycyjnie bardziej problematyczne. W szczególności, w zależności od tego, która firma produkowała sprzęt, istniały różne sposoby reprezentowania prawdziwych liczb i manipulowania nimi. Nie ma żadnego szczególnego wyboru sposobu reprezentowania rzeczywistych liczb. W połowie lat osiemdziesiątych potrzeba jednolitego traktowania liczb rzeczywistych (zwanych liczbami zmiennoprzecinkowymi) prowadzi do standardu IEEE 754. Standardy są często opracowywane, aby zapewnić spójne zachowanie. Na przykład, gdy C został po raz pierwszy opracowany, co uznano za ważny program C bardzo zależało od kompilatora. Program skompilowany na kompilatorze C może nie kompilować się na innym. Skutecznie powstało wiele różnych smaków C, a potrzeba posiadania standardowej definicji języka była uważana za ważną. Podobnie, w celu uzgodnienia wyników przeprowadzonych na zmiennoprzecinkowych punktach, chęć ujednolicenia sposobu reprezentowania liczb zmiennoprzecinkowych. Zanim zajmiemy się takimi kwestiami, pomyślmy, jakie ograniczenia będą musiały być nałożone na liczby zmiennoprzecinkowe. Ponieważ liczba bitów używanych do reprezentowania numeru zmiennoprzecinkowego jest skończona, musi istnieć maksymalny pływak i minimalny pływak. Jednakże, ponieważ liczby rzeczywiste są gęste (tzn. Pomiędzy dowolnymi dwoma różnymi liczbami rzeczywistymi, ma inną prawdziwą liczbę), nie ma sposobu, aby reprezentować liczby rzeczywiste ciągłe. Liczba całkowita nie ma tej właściwości gęstości. Oznacza to, że musimy zdecydować, które liczby rzeczywiste będą przechowywane i które z nich się pozbyć. Oczywiście, każda liczba, która powtarzała dziesiętne lub nigdy nie powtarza się, nie jest czymś, co może być reprezentowane jako numer zmiennoprzecinkowy. Notacja naukowa Dlaczego musimy reprezentować liczby rzeczywiste Oczywiście ważne w matematyce. Jednak faktyczne liczby są ważne dla pomiarów w nauce. Precyzja i dokładność Umożliwia definiowanie tych dwóch terminów: Definicja Precyzja odnosi się do liczby znaczących cyfr potrzebnych do reprezentowania numeru. W przybliżeniu określamy, w jaki sposób można wyróżnić dwa różne pomiary. Definicja Dokładność jest taka, jak blisko pomiaru jest poprawna jego wartość. Liczba może być precyzyjna, bez dokładności. Na przykład, jeśli mówisz, że wysokość niektórych wynosi 2.0002 metrów, jest to dokładne (ponieważ jest dokładnie około 11000 metrów). Może to być niedokładne, ponieważ wysokość osób może być znacząco różna. W nauce precyzja jest zazwyczaj określona liczbą znaczących cyfr. Jest to inny rodzaj precyzji, niżiego prawdopodobnie używałeś. Na przykład, jeśli masz skalę, możesz mieć szczęście, że mają precyzyjne do jednego funta. Oznacza to, że błąd - 12 funtów. Większość ludzi uważa precyzję za najmniejszy pomiar, jaki możesz wykonać. W nauce, jej różne. Jego liczba znaczących cyfr. Na przykład 1.23 10 10 ma tę samą precyzję co 1,23 10 -10. nawet jeśli druga ilość jest dużo, znacznie mniejsza niż pierwsza. Może to być nietypowe, ale to jak dobrze określić precyzję. Kiedy zdecydujemy się przedstawić numer, jego łatwiej jest obsługiwać precyzję niż dokładność. Określam dokładność, która oznacza wynik mierzonej wartości do jego aktualnej wartości. Nie ma wiele komputera, aby bezpośrednio określić dokładność (jak przypuszczam, z wystarczającymi danymi, użyj metod statystycznych w celu określenia dokładności). Dokładność obliczeń Istnieją dwie odrębne pojęcia: dokładność zarejestrowanej lub zmierzonej wartości oraz dokładność wykonywania operacji z liczbami. Nie możemy wiele zrobić o dokładności zapisanej wartości (bez dodatkowych informacji). Jednak sprzęt wykonuje operacje matematyczne racjonalnie dokładnie. Powodem, że obliczenia są perfekcyjnie dokładne, ponieważ potrzebujemy nieskończenie precyzyjnie matematyki i wymaga nieskończonej liczby bitów, która nie istnieje na komputerze. Ponieważ liczby zmiennoprzecinkowe nie mogą być nieskończenie precyzyjne, zawsze ma możliwość popełnienia błędu podczas wykonywania obliczeń. Numery zmiennoprzecinków często przybliżają rzeczywiste liczby. Właśnie dlatego, że liczby zmiennoprzecinkowe nie mogą być nieskończenie precyzyjne. W dziedzinie informatyki analiza numeryczna dotyczy metod obliczania naukowego dokładnie na komputerze. W szczególności istnieją sposoby, aby zminimalizować efekt błędów zaokrąglania, błędy wynikające z przybliżonego charakteru reprezentacji zmiennoprzecinkowej. Reprezentacja kanoniczna Kiedy reprezentujemy liczby w notacji naukowej, ma ona następującą postać: gdzie S jest significand lub mantysą, a exp jest wykładnikiem. 10 jest podstawą. W notacji naukowej może być więcej niż jeden sposób pisania tej samej wartości. Na przykład, 6.02 X 10 23 jest taki sam jak 60.2 X 10 22 jest taki sam jak 602 X 10 21. Dla dowolnej liczby reprezentowanej w ten sposób istnieje nieskończona ilość innych sposobów reprezentowania tego (przesuwając punkt dziesiętny i wyznaczyć wykładnik). Byłoby miło mieć jednolity, spójny sposób na to, czyli kanoniczny lub standardowy sposób na to. I tak jest taki sposób. Możesz napisać znaczenie jako D. FFF. gdzie 1 lt lt 9. i FFF. reprezentuje cyfry po przecinku dziesiętnym. Jeśli zastosujesz się do tego ograniczenia na D. wtedy jest tylko jeden sposób, aby napisać numer w notacji naukowej. Oczywisty wyjątek od tej reguły stanowi 0, co jest szczególnym przypadkiem. Można rozwinąć ten wzór na inne podstawy niż podstawę 10. Dla podstawy K (gdzie K 1) wpisujesz kanoniczną notację naukową jako: gdzie 1 lt D lt K - 1. Fs, które występują w ułamku, muszą spełniać następujące wymagania: 0 lt D lt K - 1. Liczba znaczących cyfr. co jest również precyzją. to liczba cyfr po punkcie promienia. Nazywamy to punktem promienia zamiast punktem dziesiętnym, ponieważ dziesiętna implikuje bazę 10 i możemy mówić o każdej innej bazie. Binarna notacja naukowa Podobnie jak w przypadku dowolnej reprezentacji na komputerze, musimy reprezentować liczby w binarnie. Oznacza to, że specjalizujemy się w formule: Tworzy to interesujące ograniczenie na D. W szczególności, 1 lt Dl 1. co oznacza, że ​​D jest zmuszony do 1. Użyj tego faktu później. Numery zmiennoprzecinkowe IEEE 754 Single Precision IEEE 754 były standardem opracowanym w latach osiemdziesiątych, aby poradzić sobie z problemem niestandardowej reprezentacji zmiennoprzecinkowej. Jest standard dla pojedynczej precyzji (32 bity) i podwójnej precyzji (64 bity). Cóż skupiają się na jednej precyzji. XXXX XXXX XXXX XXXX XXXX XXX Pojedyncza liczba precyzji IEEE 754 podzielona jest na trzy części. Trzy części odpowiadają trzem częściach liczby zapisanej w kanonicznym binarnym notatce naukowej. To jest 31. Jeśli ta wartość wynosi 1, liczba jest ujemna. W przeciwnym razie jego nieujemne. wykładnik wykładnik jest nadmiarowy 127. Zwykle oczekujemy, że nadmiar będzie stanowił połowę liczby reprezentacji. W tym przypadku liczba reprezentacji wynosi 256, a połowa wynosi 128. Niemniej jednak, nadmiar to 127. Zatem zakres możliwych wykładników wynosi -127 lt exp 128. Zwykle reprezentowałbyś znaczącą (nazywaną mantysą, co oznaczałoby reprezentację D. FFFF). Przypomnijmy jednak, że dla podstawy 2, D 1. Ponieważ D jest zawsze 1, nie ma potrzeby reprezentowania 1. Potrzebujesz tylko do reprezentowania bitów po punkcie promienia. Następnie jeden lewy punkt promienia NIE został wyraźnie przedstawiony, nazywamy to ukrytym. Pojedyncza precyzja IEEE 754 ma 24 bity precyzji, 23 bity są wyraźnie reprezentowane, a dodatkowe ukryte 1 jest 24. bit. There jest coś błędnego, gdy mówimy, że pojedyncza precyzja IEEE ma 24 bitów precyzji. W szczególności bardzo podobny do stwierdzenia, że ​​kalkulator z 15 cyfr ma 15 cyfr dokładności. Jest prawdziwy że może reprezentować wszystkie liczby z 15 cyframi, ale pytanie brzmi, czy wartość jest naprawdę taka dokładna, na przykład załóżmy, że zmierzona liczba ma tylko 3 cyfry dokładności. mieć 15 cyfr precisi nawet jeśli jest to dokładniejsze od liczby. To samo można powiedzieć o reprezentowaniu liczb zmiennoprzecinkowych. Ma 24 bitów precyzji, ale nie może dokładnie reprezentować prawdziwą liczbę znaczących bitów. Niestety, to najlepsze komputery mogą zrobić. Można przechowywać dodatkowe informacje, aby ustalić dokładnie, ile bitów jest naprawdę znaczących, ale zazwyczaj nie jest to zrobione. Kategorie W przeciwieństwie do UB lub 2C, liczby zmiennoprzecinkowe w IEEE 754 nie należą do tej samej kategorii. IEEE 754 identyfikuje 5 różnych kategorii liczb zmiennoprzecinkowych. Możesz się zastanawiać, dlaczego to robią. To jeden z powodów. Biorąc pod uwagę reprezentację, tak jak jest, nie byłoby sposobu, aby reprezentować 0. Jeśli wszystkie bity miały 0, byłby to numer 1.0 X 2 -127. Chociaż jest to mała liczba, to nie 0. Oznacza to, że bitstring zawierający wszystkie 0s ma wartość zero. Poniżej znajduje się lista kategorii liczb zmiennoprzecinkowych w IEEE 754. zero Ponieważ jest bit znaku, występuje dodatnia i ujemna reprezentacja 0. nieskończoności Istnieje również pozytywna i negatywna nieskończoność. Nieskończoność występuje, gdy dzieli się zero o zero na zero. Na przykład: 1.00.0 daje nieskończoność. NaN To nie oznacza liczby. NaN zwykle występuje, gdy wykonujesz niewłaściwą operację. Przykład kanoniczny dzieli 0.00.0, co nie ma określonej wartości. denormalized numbers Są to liczby, które mają mniej precyzji i są mniejsze (o wielkości) niż znormalizowane liczby. Wkrótce omówimy dane denormalizowane. znormalizowane liczby Są to standardowe liczby zmiennoprzecinkowe. Większość wzorów bitstring w IEEE 754 to znormalizowane liczby. Jak informować, która kategoria jest pływająca Byłoby użyteczne wiedzieć, która kategoria jest podana w pasku bitowym. Zauważmy, że 0 8 oznacza 0, powtórzono 8 razy, tzn. 0000 0000. Zauważ, że istnieje dodatni i ujemny 0. Denormalized Numbers Załóżmy, że zezwaliliśmy wszystkim 0s na znormalizowany numer (jego nie zero). Bitstart z 32 zerami wynosiłby 1,0 X 2 -127. To dość mała wartość. Możemy jednak reprezentować liczby, aby uzyskać jeszcze mniejsze, jeśli wykonamy następujące czynności, gdy wykładnikiem będzie 0 8. Nie ma ukrytych b. B 23-0 to bity pojawiające się po punkcie promienia. Napraw wykładnik na -126. Przypomnijmy, że wykładnik jest napisany z nastawieniem 127. Więc można oczekiwać, że jeśli wykładnikiem będzie 0 8. to bitstring reprezentowałoby wykładnik -127, a nie -126. Jest jednak dobry powód, dlaczego jego -126. Dobrze wytłumacz dlaczego za chwilę. Na razie przyjmij fakt, że wykładnik jest równy -126, kiedy bit wykładziny jest równy 0 8. Największy pozytywny numer denormalized Jaki jest największy pozytywny denormalized number To jest, gdy frakcja wynosi 1 23. Wygląda tak: Ten bitstring odwzorowuje się na liczbę 0. (1 23) x 2 -126. Liczba ta ma 23 bity precyzji, ponieważ po punkcie promienia jest 23 ls. Najmniejsza liczba dodatnia Denormalized Jaka jest najmniejsza liczba dodatnia denormalizd Wykładnik bitstring 0 8. (Wszystkie numery denormalized mają ten bitstring). Jego wartość wynosi -126. Ułamek wynosi (0 22) 1. tj. 22 zerowe, a następnie jedno. Wygląda to tak: ten wzorzec bitstring odwzorowuje się na liczbę 0.0 22 1 x 2 -126. czyli 1,0 x 2 -149. Liczba ta ma 1 bit precyzji. Zerowe liczby zerowe wynoszą zaledwie 22 i nie mają wpływu na liczbę bitów precyzji. Nie możesz uwierzyć, że ta liczba ma tylko 1 precyzję, ale tak. Rozważmy liczbę dziesiętną 123. Liczba ta ma 3 cyfry dokładności. Zastanów się 00123. Ma również trzy cyfry precyzji. Wiodące 0s nie mają wpływu na liczbę cyfr precyzji. Podobnie, jeśli masz 0.000123, zerami są tylko umieszczenie 123 poprawnie, ale nie znaczące cyfry. Jednak 0,01230 ma 4 znaczące cyfry, ponieważ prawy 0 rzeczywiście dodaje precyzji. Tak więc, na przykład, mamy 22 zera a następnie 1 po punkcie promienia, a 22 zera nie ma nic wspólnego z liczbą znaczących bitów. Używając liczb denormalizowanych, udało nam się uczynić najmniejszy pozytywny pływak na wartość 1,0 X 2 -149. zamiast 1,0 X 2 -127. co byśmy mieli, gdyby numer został znormalizowany. W ten sposób udało się nam osiągnąć 22 rzędy wielkości, poświęcając drobiazgi. Dlaczego -126, a nie -127 Gdy bit wykładziny wykładniczej wynosi 0 8. to jest odwzorowane na wykładnik -126. Jednak w przypadku znormalizowanych liczb zmiennoprzecinkowych pojedynczych precyzji IEEE 754, nastawa na wykładniku wynosi -127. Dlaczego to jest -126 zamiast -127. Aby odpowiedzieć na to pytanie, musimy przyjrzeć się najmniejszej pozytywnej znormalizowanej liczbie. Dzieje się tak z następującym wzorem bitstring Ten bitstring odwzorowuje się na 1.0 x 2 -126. Spójrzmy na dwie możliwości wyboru największych pozytywnych denormalizowanych liczb. 0. (1 23) x 2 -127 (wykładnik jest 127) 0. (1 23) x 2 -126 (wykładnik jest 126 --- to naprawdę jest stosowane w pojedynczej precyzji IEEE 754) Obie opcje są mniejsze niż 1.0 x 2-126. najmniejsze znormalizowane (w szczególności zauważ, że liczba z wykładnikiem -126 jest mniejsza). To dobrze, ponieważ chcemy uniknąć pokrywania się między znormalizowanymi i denormalizowanymi liczbami. Zauważ, że liczba z -126 jako wykładnik jest większa niż liczba, która wynosi -127 jako wykładnik (obie mają ten sam mantissasignificand, a -126 jest większy niż -127). Zatem, wybierając -126 zamiast -127, różnica między największym numerem denormalizowanym a najmniejszą znormalizowaną liczbą jest mniejsza. Czy jest to niezbędna cecha Czy naprawdę konieczne jest, aby luka ta była mała Może nie, ale przynajmniej istnieją jakieś uzasadnienie dla tej decyzji. Konwersja normalizowana z bazy 10 do IEEE 754 Umożliwia konwertowanie 10.25 z bazy 10 na pojedynczą precyzję IEEE 754. Wykonaj kroki: Konwertuj liczbę lewych punktów bazowych na podstawę 2 Konwertuj numer prawy punktu bazowego na podstawę 2. Wynik ten wynosi 1010 0.01, czyli 1010.01. Napisz to w binarnym notatce naukowej. To jest 1010.01 X 2 0. który wynosi 1.01001 X 2 3. Napisz to w pojedynczej precyzji IEEE 754. To jest 1010.01 X 2 0. który wynosi 1.01001 X 2 3. Zamień 3 na poprawne nastawienie. Ponieważ nastawienie wynosi 127, dodaj 127 do 3, aby uzyskać 130 i przekształcić w binarne. Okazuje się, że wynosi 1000 0010. Wypisać numer we właściwej kolejności Zwróć uwagę, że ukryta 1 nie jest reprezentowana w ułamku. Algorytm zapisywania pozytywnego wykładnika w nadmiarze 127 Konwersja 130 na binarne wydaje się trochę bolesna. Wydaje się, że wymaga wiele kroków. Jest jednak dość łatwy sposób na przekonwertowanie pozytywnych wykładników na binarne. Po pierwsze, korzystamy z następującego faktu: 1000 0000 map do wykładnika 1 w nadmiarze 127. Jeśli było to nadwyżka 128, to będzie mapować do 0. Byłoby miło, w rzeczywistości, gdyby to było ponad 128, bo wtedy wypisać liczbę dodatnią w unsigned binary, a następnie przerzucać najbardziej znaczący bit od 0 do 1, i wed być zrobione. (Sprawdź to dla siebie za pomocą przykładu lub dwóch). Jednak nadmiar 127 i nadmiar 128 są tylko jeden po drugim, więc nie jest to zbyt trudne do odpowiedniego dostosowania algorytmu. To, co robisz, aby przeliczać pozytywne wykładniki na nadmiar 127. Odejmij jeden z pozytywnego wykładnika. Konwertuj liczbę na unsigned binary, używając 8 bitów. Odwróć MSb do 1 Na przykład w poprzednim przykładzie mieliśmy wykładnik 3. Odejmij 1, aby uzyskać 2, przekonwertuj na UB, aby uzyskać 0000 0010. Odwróć MSb, aby uzyskać 1000 0010. To odpowiedź z poprzedniej sekcji. Przed zapamiętać ten algorytm, powinieneś naprawdę spróbować zrozumieć, skąd pochodzi. To jest skąd pochodzi. Rozważmy pozytywny wykładnik, x. reprezentowane w bazie 10. Aby przeliczyć ją na nadmiar 127, dodajemy 127. Mamy więc x 127. Możemy przepisać to jako: (x - 1) 128. To jest prosta algebra. 128 to 1000 0000 w binarnie. I mamy x-1. gdzie następuje odejmowanie 1. Dopóki x-1 jest mniejszy niż 128 (i będzie to, ponieważ maksymalna wartość x wynosi 128), to łatwo dodać tę liczbę binarną do 1000 0000. Pamiętaj, że zapamiętywanie jest słabym drugim do zrozumienia. Lepiej zrozumieć, dlaczego coś działa, niż zapamiętać odpowiedź. Jednak nawet lepiej zrozumieć, dlaczego coś działa i pamiętać też. Konwersja Denormalized z bazy 10 do IEEE 754 Załóżmy, że musisz poprosić o przeliczanie 1,1 x 2 -128 na pojedynczą precyzję IEEE 754. Jak to zrobiłeś Jeśli uważasz, że numer jest znormalizowany, możesz go konwertować do znormalizowanego numeru przy użyciu procedury poprzedniej. Będziesz próbował przekonwertować wykładnik, ponieważ odkryłeś, że liczba jest ujemna, a liczba ta musi być nieujemna przy konwersji z bazy 10 (po dodaniu stronniczości) do UB. Możesz oszczędzić sobie tego kłopotu, jeśli pamiętasz, że najmniejsza, pozytywna znormalizowana liczba ma wykładnik -126 i że wykładnik mamy -128, czyli mniej niż -126. Jeśli zapisałeś numer w binarnym notacji naukowej (w formie kanonicznej), a wykładnik jest mniejszy niż -126, to masz numer denormalizowany. Od -128 do -126, liczba próbowała przedstawić jest denormalized numer. Zasady reprezentowania liczb denormalizowanych różnią się od przedstawiania znormalizowanych liczb. Aby reprezentować denormalizowaną liczbę, musisz przesunąć punkt promień tak, aby wykładnikiem był -126. W takim przypadku wykładnik musi być zwiększony o 2 od -128 do -126, więc punkt radiowy musi przesunąć się o 2 w lewo. To oznacza: 0.011 x 2 -126 W tym momencie jest łatwe do konwersji. Interpretacja bitstring wynosi 0 8. Skopiuj bity po punkcie promienia do frakcji. Bit znaku to 0. Nie Unsigned Float W przeciwieństwie do ints, nie ma unsigned float. Jednym z powodów może być skomplikowana reprezentacja liczb zmiennoprzecinkowych. Jeśli poznamy bit znaku, jak byśmy to użyli Czy dodaliśmy jeszcze jeden bit do wykładnika? To by miało sens, ponieważ znajduje się obok wykładnika, ale trzeba by zmienić nastawienie. Możemy dodać jeszcze trochę do ułamka. Przynajmniej to spowodowałoby najmniej zakłóceń. Czy jeden dodatkowy bit pomoże nam w jakikolwiek sposób Z jednej strony pozwala nam reprezentować dwa razy więcej liczb zmiennoprzecinkowych. Z drugiej strony, czyni to poprzez dodanie jednej precyzji. Być może dzięki takim rozumowaniu twórcy standardu IEEE 754 czuli, że posiadanie niepodpisanego pływaka nie ma sensu, a zatem nie ma niepodpisanego pływaka w zmiennym zmiennym IEEE 754. Dlaczego znak Bit, wykładnik, a następnie frakcja Jeśli spojrzymy na reprezentację dla IEEE 754, zauważymy, że bit znaku, następnie wykładnik, a następnie frakcja. Dlaczego w tym porządku Heres uzasadnione wyjaśnienie. Załóżmy, że chcesz porównać dwie daty. Data zawiera miesiąc, dzień i rok. Używasz dwóch cyfr na miesiąc, dwa na dzień, a cztery na rok. Załóżmy, że chcesz zapisać datę jako ciąg znaków i chcesz użyć porównania ciągów do porównywania dat. Który zbiór należy wybrać? Należy wybrać rok, miesiąc i dzień. Dlaczego ponieważ podczas porównywania ciągów porównujesz lewy i prawy, a najbardziej znaczącą ilość po lewej. To rok. Kiedy spojrzymy na numer zmiennoprzecinkowy, wykładnik jest najważniejszy, więc jego po lewej stronie frakcji. Można również dokonać porównań, ponieważ wykładnik jest zapisywany w notacji stronniczości (możesz również użyć uzupełnienia dwójki, chociaż porównanie to tylko trochę bardziej skomplikowane). Więc dlaczego jest znak bit do lewej strony Może odpowiedź brzmi, ponieważ to, gdzie pojawia się w podpisanej int reprezentacji. Może być nietypowe posiadanie znaku w innym miejscu. Po przeczytaniu i ćwiczeniu powinieneś być w stanie wykonać następujące czynności: Podaj nazwiska każdej z pięciu kategorii liczb zmiennoprzecinkowych w pojedynczej precyzji IEEE 754. Biorąc pod uwagę 32 bitstring, określ, w jakiej kategorii pasuje bitstring. Biorąc pod uwagę znormalizowaną lub denormalizowaną liczbę, wypisz numer w kanonicznym tekście binarnym (możesz pozostawić wykładnik zapisany w bazie 10). Biorąc pod uwagę liczbę w bazie 10 lub kanoniczną notatkę binarną, przekonwertuj ją na pojedynczy numer zmiennoprzecinkowy IEEE 754. Wiedz, jakie jest nastawienie do znormalizowanych liczb. Wiedz, jaki wykładnik jest używany do denormalized liczb. Wiedz, co oznacza ukryty 1. Notacja dodatkowa: Notacja o stałej długości (tzn. Długość użytego wzoru bitowego nie może być zmieniona raz ustawiona na początku) umożliwia zapisanie ujemnych (-) i nieujemnych (w tym zera) wartości poprzez potraktowanie prawych cyfr, nazywanych znaczącym bitem (MSB), reprezentujących znak liczby. W nadmiarze notacji MSB znany również jako bit znaku 1 oznacza znak nieujemny (), a 0 oznacza ujemny (-) numer. Zauważ dwa poniższe przykłady. Przykład 1. W przypadku wzoru 4-bitowego, na przykład: 0 110 wartość cyfry kolumny najbardziej znaczącego bitu wynosi 8, dlatego wzorce 4-bitowe są nazywane notatką nadmiarową (8). Aby przekonwertować ten przykład, znajdź wartość sumy całego wzoru, tak jakby standardowa binarna liczba: Przykład 2. W przypadku 5-bitowego przykładu wzoru 1 1110. wartość digitcolumn najbardziej znaczącego bitu wynosi 16., więc 5- bitowe wzorce są określane jako nadmiar (16) notacji. Aby przekonwertować ten przykład, znajdź wartość sumy całego wzoru, tak jakby standardowa binarna liczba: (1x16) (1x8) (1x4) (1x2) (0x1) 16 8 4 2 0 30 Następnie odjąć bieżącą wartość nadmiarową, 16, od suma, (30 16) Wynik jest wartością podpisaną, 14. Zatem jest oczywiste, że w nadpisie zapisu bit znaku 0 reprezentuje znak ujemny, a 1 oznacza nieujemny znak oznaczający podpisaną wartość.

No comments:

Post a Comment