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

Podobne dokumenty
Zapis liczb binarnych ze znakiem

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

Pracownia Komputerowa wykład IV

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

Pracownia Komputerowa wyk ad VII

Pracownia Komputerowa wykład VI

Pracownia Komputerowa wykład V

Komputerowa reprezentacja znaków i liczb. dr inż. Izabela Szczęch Politechnika Poznańska Podstawy informatyki

Języki i metodyka programowania. Reprezentacja danych w systemach komputerowych

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

Reprezentacja stałoprzecinkowa. Reprezentacja zmiennoprzecinkowa zapis zmiennoprzecinkowy liczby rzeczywistej

Pracownia Komputerowa wyk ad IV

Podstawy Informatyki

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

dr inż. Jarosław Forenc

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

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

Kodowanie informacji. Przygotował: Ryszard Kijanka

Jednostki informacji - bit. Kodowanie znaków: ASCII, ISO 8859, Unicode liczb: NKB (BCN), U2, BCD. Liczby zmiennoprzecinkowe standard IEEE 754

Podstawy informatyki. Izabela Szczęch. Politechnika Poznańska

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

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

Teoretyczne Podstawy Informatyki

Pracownia Komputerowa wyk ad VI

Zestaw 3. - Zapis liczb binarnych ze znakiem 1

Wprowadzenie do informatyki - ć wiczenia

Techniki multimedialne

INFORMATYKA. Zajęcia organizacyjne. Arytmetyka komputerowa.

Technologie Informacyjne

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

Stan wysoki (H) i stan niski (L)

Pracownia Komputerowa wyk ad V

Systemy zapisu liczb.

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

Architektura komputerów

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

kodowanie informacji Autor prezentacji: 1 prof. dr hab. Maria Hilczer

PODSTAWY INFORMATYKI. Informatyka? - definicja

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

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

Architektura komputerów

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

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

Kodowanie informacji. Kody liczbowe

Arytmetyka binarna - wykład 6

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

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

Wstęp do Informatyki

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

SYSTEMY LICZBOWE. Zapis w systemie dziesiętnym

Komunikacja człowiek-komputer

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

Wprowadzenie do informatyki - ć wiczenia

Metoda znak-moduł (ZM)

Architektura systemów komputerowych Laboratorium 5 Kodowanie liczb i tekstów

SYSTEMY LICZBOWE 275,538 =

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

Naturalny kod binarny (NKB)

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

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

Operacje arytmetyczne

Kod U2 Opracował: Andrzej Nowak

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

Ochrona danych osobowych. Pozycyjne systemy liczbowe. Jednostki informacji. Kodowanie znaków ASCII, ISO 8859, Unicode. Kodowanie liczb NKB, U2, BCD

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

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

LICZBY ZMIENNOPRZECINKOWE

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

Architektura komputerów

1.1. Pozycyjne systemy liczbowe

Podstawy informatyki. Reprezentacja danych w systemach cyfrowych

Arytmetyka komputera

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

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

Podstawy Informatyki

architektura komputerów w. 2

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

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

Czynnik, któremu człowiek może przypisać określony sens (znaczenie) w celu wykorzystania do różnych celów. Wszystko to, co może być zużytkowane do

Technologie Informacyjne Wykład 4

Pozycyjny system liczbowy

Wprowadzenie do informatyki - ć wiczenia

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

Wprowadzenie do informatyki ćwiczenia

Wprowadzenie do informatyki - ć wiczenia

System Liczbowe. Szesnastkowy ( heksadecymalny)

Systemy liczbowe używane w technice komputerowej

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

Informatyka 1. Wykład nr 5 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc

L6.1 Systemy liczenia stosowane w informatyce

Cyfrowy zapis informacji

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

Arytmetyka liczb binarnych

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

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

1. Operacje logiczne A B A OR B

DZIESIĘTNY SYSTEM LICZBOWY

Operacje arytmetyczne w systemie dwójkowym

2 Arytmetyka. d r 2 r + d r 1 2 r 1...d d 0 2 0,

Podstawy Informatyki dla Nauczyciela

Transkrypt:

Sposób reprezentacji informacji w systemie Reprezentacja informacji Jak to się dzieje że w pamięci komputera można przechowywać teksty, obrazy, dźwięki i liczby? Dzięki kodowaniu informacji. Kodowanie informacji jest to przedstawienie informacji w postaci komunikatu zrozumiałego przez odbiorcę. Do kodowania używamy określonego zbioru, np.. cyfr, znaków, impulsów.

Kod BCD Reprezentacja znaków BCD (Binary Coded Decimal) sposób zapisu liczb polegający na zakodowaniu kolejnych cyfr dziesiętnych liczby dwójkowo przy użyciu czterech bitów. Każda cyfra liczby dziesiętnej jest oddzielnie kodowana dwójkowo w postaci odpowiedniego słowa. Cała liczba dziesiętna jest więc zakodowana dwójkowo w postaci odpowiedniego złożenia takich słów. Liczba zapisana w kodzie BCD po zamianie na system szesnastkowy da się bezpośrednio odczytać jako liczba dziesiętna. Kod BCD Kod BCD Kod BCD jest obecnie stosowany głównie: 9234 (10) = 1001 0010 0011 0100 = 1001001000110100 (BCD) 10000110000001110001 (BCD) 1000 0110 0000 0111 0001 = 86071 (10) w urządzeniach elektronicznych z wyświetlaczem cyfrowym (np. w kalkulatorach, miernikach cyfrowych) w zastosowaniach finansowych informatyki (ujednoznacznia zapis części ułamkowych kwot i ułatwia dziesiętne zaokrąglanie).

Kod ASCII ASCII (American Standard Code for Information Interchange) Opracowany dla urządzeń dalekopisowych, później przyjęty dla komputerów 7-bitowy kod przyporządkowujący liczby z zakresu 0-127 literom (alfabetu angielskiego), cyfrom, znakom przestankowym i innym symbolom oraz poleceniom sterującym litery, cyfry oraz inne znaki drukowane tworzą zbiór znaków ASCII - jest to 95 znaków o kodach 32-126 pozostałe 33 kody (0-31 i 127) to tzw. kody sterujące służące do sterowania urządzeniem odbierającym komunikat, np. drukarką czy terminalem Kod ASCII Kod ASCII kody sterujące 33 kody 0-31 i 127 znaki niedrukowalne: sygnały dźwiękowe, białe znaki (tabulacja, spacja, znak końca wiersza, powrót na początek wiersza) Kod ASCII informacja tekstowa W systemie DOS/Windows każdy wiersz pliku zakończony jest parą znaków: CR, kod ASCII - 13 (10) = 0D (16) - powrót na początek wiersza LF, kod ASCII - 10 (10) = 0A (16) + przesunięcie o wiersz w systemie Linux znakiem końca wiersza jest tylko: LF, kod ASCII - 10 (10) = 0A (16) podczas przesyłania pliku tekstowego z systemu Linux do systemu DOS/Windows pojedynczy znak LF zamieniany jest automatycznie na parę znaków CR i LF błędne przesłanie pliku tekstowego (w trybie binarnym) powoduje nieprawidłowe jego wyświetlanie

Kod ASCII informacja tekstowa Kod ASCII strony kodowe Pierwszy wiersz pliku Drugi wiersz pliku Trzeci wiersz pliku Kod ASCII w wersji podstawowej jest 7-bitowy Większość komputerów pracuje na 8-bitowych bajtach Dodatkowy bit jest wykorzystywany do powiększenia zbioru kodowanych znaków Powstało wiele różnych rozszerzeń ASCII wykorzystujących ósmy bit, nazywanych stronami kodowymi Kod ASCII strony kodowe ISO/IEC 8859 Strona kodowa - sposób na przypisanie poszczególnym kodom binarnym rożnych znaków pisarskich Różne strony kodowe mogą przyjąć odmienne znaki dla tego samego kodu Różne strony kodowe mogą różnić się wyborem znaków Duża liczba dostępnych stron kodowych wynika z faktu, że na 8 bitach można zakodować tylko 256 różnych znaków, co jest niewystarczające do zmieszczenia w jednym zestawie znaków wszystkich alfabetów Zestaw standardów służących do kodowania znaków za pomocą 8 bitów Standardy te zostały utworzone przez European Computer Manufactures Association (ECMA) w połowie lat osiemdziesiątych, a następnie uznane przez ISO Wszystkie zestawy ISO 8859 mają znaki 0-127 takie same jak ASCII Pozycjom 128-159 przypisane są dodatkowe kody sterujące, tzw. C1 (faktycznie są nieużywane).

Standardy ISO 8859 ISO 8859-1 (Latin-1) - alfabet łaciński dla dla Europy zachodniej ISO 8859-2 (Latin-2) alfabet łaciński dla Europy środkowej i wschodniej, również odpowiednia Polska Norma ISO 8859-3 (Latin-3) alfabet łaciński dla Europy południowej ISO 8859-4 (Latin-4) alfabet łaciński dla Europy północnej ISO 8859-5 (Cyrillic) alfabet dla cyrylicy ISO 8859-6 (Arabic) - dla alfabetu arabskiego ISO 8859-7 (Greek) - dla alfabetu greckiego ISO 8859-8 (Hebrew) - dla alfabetu hebrajskiego ISO 8859-9 (Latin-5) ISO 8859-10 (Latin-6) ISO 8859-11 (Thai) - dla alfabetu tajskiego ISO 8859-13 (Latin-7) ISO 8859-14 (Latin-8) ISO 8859-15 (Latin-9) - z ISO 8859-1 usunięto kilka rzadko używanych znaków i wprowadzono znak Euro oraz litery Š, š, Ž, ž, Œ, œ oraz Ÿ ISO 8859-16 (Latin-10) alfabet łaciński dla Europy środkowej - zmodyfikowany ISO 8859-2 ze znakiem Euro i dodatkowymi literami dla kilku języków. Kod ISO/IEC 8859-1 kodowanie używane w Amerykach, Europie Zachodniej, Oceanii i większej części Afryki dostępne języki: albański, angielski, baskijski, duński, estoński, fiński, francuski, hiszpański, irlandzki, islandzki, kataloński, łaciński, niderlandzki, niemiecki, norweski, portugalski, retoromański, szkocki, szwedzki, włoski składa się ze 191 znaków łacińskiego pisma po rozszerzeniu o dodatkowe przypisania znaków jest podstawą dla dwóch mapowań znaków ISO-8859-1 i Windows-1252 Kod ISO/IEC 8859-2 ISO 8859-1 i 8859-2 porównanie dostępne języki: bośniacki, chorwacki, czeski, węgierski, polski, rumuński, serbski, serbsko-chorwacki, słowacki, słoweński, górno- i dolnołużycki możliwość przedstawienia znaków w języku niemieckim i angielskim składa się ze 191 znaków łacińskiego pisma zapisywanych na 8-bitach kody z przedziałów 00 (16) -1F (16) oraz 7F (16) -9F (16) nie są używane w ISO-8859-2 kodowanie to jest zgodne z Polską Normą

Kod EBCDIC Kod EBCDIC EBCDIC - Extended Binary Coded Decimal Interchange Code 8-bitowe kodowanie znaków stworzone jako rozszerzenie kodowania BCD umożliwia zapisanie do 256 różnych symboli pojedynczy znak zapisywany jest na 8-bitach podzielonych na dwie części pierwsze 4 bity oznaczają grupę do jakiej dany znak należy ostatnie 4 bity identyfikują konkretny znak kodowanie EBCDIC było używane głównie w systemach IBM (komputery: z/os, VM, OS/390, systemy operacyjne: OS/400, i5/os) w latach 60-tych XX wieku ułatwiało wprowadzanie danych do komputera przy użyciu kart perforowanych kody EBCDIC nie są zgodne z ASCII EBCDIC występowało w wielu wersjach, odmiennych dla różnych państw większość stron kodowych EBCDIC dopuszczała stosowanie tylko dwóch języków (angielski + dodatkowy) Windows 1250 Windows 1250 i ISO 8859-2 Strona kodowa używana przez system Microsoft Windows do reprezentacji tekstów w językach środkowoeuropejskich używających alfabetu łacińskiego, takich jak albański, chorwacki, czeski, polski, rumuński, słowacki, węgierski jest podobny do ISO 8859-2 posiada wszystkie jego drukowalne znaki (a także kilka dodatkowych), lecz kilka z nich zajmuje inne miejsca

Kodowanie polskich znaków Tekst zapisany w standardzie ISO 8859-2 Tekst wyświetlony w edytorze systemu Windows (Windows 1250) Standardy kodowania polskich znaków W Polsce stosowanych było ok. 20 standardów kodowania polskich liter (http://www.ogonki.agh.edu.pl) Próby wprowadzania standardu: Mazovia - promowany przez społeczność informatyczną w Polsce (nie był pełną stroną kodową, ale określał sposób kodowania polskich liter) IBM-Latin-2 (CP-852) - stosowany w DOS, OS/2 i części systemu Windows CP-1250 (Windows-1250) stosowany w MS Windows PL ISO-Latin-2 (ISO 8859-2) - stosowany w Internecie Standard ISO 8859-2 jest zgodny z Polską Normą PN-93 T-42118 Unicode Komputerowy zestaw znaków mający w zamierzeniu obejmować wszystkie pisma i inne znaki (symbole muzyczne, techniczne, wymowy) używane na świecie Unicode przypisuje unikalny numer każdemu znakowi, niezależnie od używanej platformy, programu czy języka Definiowany jest przez dwa standardy, w których znaki są identyczne: Unicode i ISO/IEC 10646 Standard Unicode zaimplementowany został w wielu nowych technologiach, np. XML, Java, Microsoft.NET Framework, nowe systemy operacyjne Podstawowe właściwości Unicode Jednoznaczność każdemu znakowi zakodowanemu za pomocą Unicode odpowiada zawsze ta sama wartość liczbowa i odwrotnie. Uniwersalność dostępne znaki obejmują wszystkie powszechnie używane języki i symbole. 16-bitowa reprezentacja każdy znak reprezentowany jest w postaci 16-bitowej liczby, czyli można zakodować 2 16 =65536 różnych znaków Efektywność ułatwienie manipulowania tekstami, gdyż identyfikacja znaku nie zależy od sekwencji sterujących czy znaków następujących bądź poprzedzających

Standardy wewnątrz Unicode Standard Unicode definiuje kody numeryczne przypisane poszczególnym znakom, nie określa natomiast sposobu bajtowego kodowania znaków Kodowanie określa sposób w jaki znaki ze zbioru mają być zapisane w postaci binarnej Stosowane metody kodowania: UCS - Universal Character Set UTF - Unicode Transformation Format Niektóre z metod kodowania: UTF-8 - kodowanie 8-bitowe ze zmienną długością kodowania, zgodne z ASCII UTF-16 - kodowanie 16-bitowe ze zmienną długością kodowania UTF-32/UCS-4 - kodowanie 32-bitowe UTF-EBCDIC - kodowanie 8-bitowe ze zmienną długością kodowania, kompatybilne z EBCDIC (nie jest częścią standardu Unicode) Standardy wewnątrz Unicode UTF -8-unikodośmiobitowym, Pierwsze 128 znaków pokrywa się z tablicą ASCII i jest zapisywana za pomocą jednego bajta, natomiast znaki dodatkowe (np. polskie literki) są zapisywane za pomocą specjalnych kilkubajtowych sekwencji. UTF -16 - kodowaniem dwubajtowym. Każdemu znakowi odpowiadają dwa bajty. UTF -32 - Pewnym problemem mogą być języki ideograficzne, na przykład chiński liczący tysiące znaków. Problemy takie ostatecznie rozwiązuje kodowanie czterobajtowe UTF-32 (cztery bajty dają 232 = 4 miliardy kombinacji). Kod Unicode Rozwijany jest przez konsorcjum, w skład którego wchodzą firmy komputerowe, producenci oprogramowania oraz grupy użytkowników - http://www.unicode.org Strona polska: http://www.unikod.pl Pierwsza wersja: Unicode 1.0 (październik 1991) Reprezentacja liczb Ostatnia wersja: Unicode 5.1.0 (4 kwietnia 2008)

Reprezentacja liczb Stałoprzecinkowa bez znaku ze znakiem Zmiennoprzecinkowa pojedynczej precyzji podwójnej precyzji rozszerzonej precyzji Liczby naturalne Przechowywane są dokładnie tak, jak zapisalibyśmy je w systemie dwójkowym. Każdy bit stanowi pojedynczą cyfrę w tym systemie. Zapis binarny prosty pozwala za pomocą n cyfr zapisywać liczby z zakresu: 0 L 10 2 n 1 1 bajt to 2 8 kombinacji, czyli zakres 0-255 2 bajty to 2 16 kombinacji, czyli zakres 0-65536, 4 bajty to ponad 4 miliardy kombinacji Dodawanie liczb binarnych Do wykonywania dodawania niezbędna jest znajomość tabliczki dodawania, czyli wyników sumowania każdej cyfry z każdą inną: 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10 Dodawanie liczb binarnych - zadania Zsumować liczby binarne: 1111001 (2) oraz 10010 (2). 01111111 (2) oraz 1 (2) 0101= 5 10 + 0110= 6 10 1011=11 10 1100=12 10 + 0011= 3 10 1111=15 10 1010=10 10 + 1010=10 10 10100=20 10 1111=15 10 + 0001= 1 10 10000=16 10

Dodawanie liczb binarnych - problem W pamięci komputera liczby binarne przechowywane są w postaci ustalonej ilości bitów (np. 8, 16, 32 bity). Jeśli wynik sumowania np. liczb 8 bitowych jest większy niż 8 bitów, to najstarszy bit (dziewiąty bit) zostanie utracony. Sytuacja taka nazywa się nadmiarem (ang. overflow) i występuje zawsze, gdy wynik operacji arytmetycznej jest większy niż górny zakres danego formatu liczb binarnych (np. dla 8 bitów wynik większy od 28-1, czyli większy od 255): 11111111 (2) + 00000001 (2) = 1 00000000 (2) (255 + 1 = 0) Odejmowanie liczb binarnych Przy odejmowaniu korzystamy z tabliczki odejmowania: 0-0 = 0 0-1 = 1 i pożyczka do następnej pozycji 1-0 = 1 1-1 = 0 Pożyczka oznacza konieczność odjęcia 1 od wyniku odejmowania cyfr w następnej kolumnie. 1101110 (2) - 1111 (2) = 1011111 (2) (110 (10) -15 (10) = 95 (10) ). 1 1101110-1111 1 11 1101110-1111 11 11111 1101110-0001111 1011111 Odejmowanie liczb binarnych - zadania Odjąć liczby binarne: 10000000 (2) - 0000001 (2) =??? 10101010 (2) - 01010101 (2) =??? Odejmowanie liczb binarnych problem Jeśli od liczby większej odejmiemy mniejszą, to wynik będzie ujemny. 11111111 00000000-00000001 11111111 Otrzymujemy same jedynki, a pożyczka nigdy nie zanika. Sytuacja taka nazywa się niedomiarem (ang. underflow) i występuje zawsze, gdy wynik operacji arytmetycznej jest mniejszy od dolnego zakresu formatu liczb binarnych (dla naturalnego kodu dwójkowego wynik mniejszy od zera).

Liczby całkowite Jak kodowany jest znak liczby? Istnieją trzy główne sposoby kodowania liczb ze znakiem: kod ZNAK-MODUŁ, kod U1, kod U2. Kod ZM Kod znak-moduł występuje też pod nazwami: ZM, Z-M, SM (Signed Magnitude), S+M W kodzie ZM: Najstarszy bit liczby jest bitem znaku wszystkie bity liczby poza najstarszym mają takie same znaczenie jak w kodzie binarnym Jeśli przyjmiemy do zapisu liczb format całkowity n-bitowy, to liczby w kodzie znak-moduł mają następującą postać: c n-1 c n-2 c n-3... c 2 c 1 c 0 znak moduł Kod ZM Wartość n-bitowej, całkowitej liczby w kodzie ZM obliczamy wg wzoru: 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) bn-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 Zmiana liczby dziesiętnej na kod ZM Przykłady 10110111 (ZM) = (-1) 1 x(2 5 + 2 4 + 2 2 + 2 1 + 2 0 ) = - (32 + 16 + 4 + 2 + 1) = - 55 (10) Zadanie Obliczyć wartość dziesiętną liczby 00011111 (ZM). Bit znaku: 0 liczba dodatnia, 1 liczba ujemna

Przeliczanie liczb dziesiętnych na zapis ZM 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 przeliczając liczbę dziesiętną na zapis dwójkowy. 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. Przeliczanie liczb dziesiętnych na zapis ZM - przykład 1. Zmieniamy liczbę dodatnią 93 Zmieniamy na liczbę binarną: 93 10 = 1011101 ZM Dodajemy bit znaku: 93 10 = 01011101 ZM 2. Zmieniamy liczbę ujemną -93 Zmieniamy moduł liczby na liczbę binarną: -93 10 = =93 10 = 1011101 ZM Dodajemy bit znaku: 93 10 = 11011101 ZM Przeliczanie liczb dziesiętnych na zapis ZM zadanie Przedstawić wartość -69 w 8-bitowym kodzie ZM. Rozw. -69 (10) = 11000101 (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. Zakres n bitowej liczby w kodzie ZM wynosi Z (ZM) = <-2 n-1 + 1, 2 n-1-1>

Zapis ZM wady Koncepcyjnie prosty, lecz stwarzał poważne problemy przy wykonywaniu operacji arytmetycznych Niejednoznaczność!!! - wartość 0 posada dwa słowa kodowe: 0000 oraz 1000. Bit znakowy posiada zupełnie inne znaczenie od pozostałych bitów i nie uczestniczy bezpośrednio w operacjach arytmetycznych. System uzupełnień do 1 U1 U1 (ang. 1C - One's Complement) - wszystkie bity zapisu liczby posiadają swoje 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 systemie binarnym. Waga -2 n-1 +1 2 n-2 2 n-3 2 2 2 1 2 0 Cyfra b n-1 b n-2 b n-3... b 2 b 1 b 0 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 Najstarszy bit jest bitem znaku: 0 liczba dodatnia, 1 liczba ujemna Cechy charakterystyczne kodu U1 Wartość 0 posada dwa słowa kodowe: 0000 oraz 1111. Liczba przeciwna zawsze powstaje w kodzie U1 przez negację wszystkich bitów: 1 (10) = 0001 (U1) (-1) (10) = 1110 (U1) 5 (10) = 0101 (U1) (-5) (10) = 1010 (U1) 7 (10) = 0111 (U1) (-7) (10) = 1000 (U1) Zasada ta obowiązuje dla kodów U1 o dowolnej długości.

Przeliczanie liczb dziesiętnych na zapis U1 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. Przykład: 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). Przeliczanie liczb dziesiętnych na U1 Jeśli liczba jest ujemna, to wartość liczby możemy wyznaczyć: Wariant 1. 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. Wariant 2: Wyznaczamy wartość 2 n - 1 + liczba, gdzie n oznacza liczbę bitów w przyjętym formacie U1. Wartość tę kodujemy w naturalnym systemie dwójkowym i otrzymujemy kod U1 liczby wyjściowej. Przeliczanie liczb dziesiętnych na zapis U1 przykład Przykład Wariant 1 Wyznaczyć 8-mio bitowy zapis U1 liczby dziesiętnej -113 1. Liczba -113 jest ujemna. Jej moduł wynosi 113. Wyznaczamy zapis dwójkowy modułu: 113 (10) = 1110001 (2) 2. Otrzymany zapis uzupełniamy bitami 0 do długości 8 bitów. 3. Następnie negujemy wszystkie bity i otrzymujemy w ten sposób zapis U1 liczby -113: -113 (10) = NOT 01110001 = 10001110 (U1). Przeliczanie liczb dziesiętnych na zapis U1 przykład Przykład Wariant 2 Wyznaczyć 8-mio bitowy zapis U1 liczby dziesiętnej -113 1. Obliczamy: 2 8-1 - 113 = 256-1 - 113 = 142 2. Otrzymany wynik kodujemy w systemie dwójkowym i otrzymujemy kod U1 liczby -113: 142 (10) = 10001110 (2), czyli -113 (10) = 10001110 (U1).

Przeliczanie liczb dziesiętnych na zapis U1 zadanie Wyznaczyć 16 bitowy zapis U1 liczby dziesiętnej -4521 Kod U1 - wady W systemie U1 wykonywanie operacji arytmetycznych wciąż wymaga dodatkowych założeń Przy dodawaniu do wyniku należało dodać przeniesienie poza bit znaku, aby otrzymać poprawny wynik. Kod uzupełnień do 2 U2 Wartość dziesiętna liczby w U2 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 systemie binarnym. Nowy kod nosi nazwę uzupełnień do podstawy 2 lub w skrócie U2 (ang. 2C - Two's Complement). Wartość liczby U2 obliczamy następująco: 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

Wartość dziesiętna liczby w U2 Wartość dziesiętna liczby w U2 Jeśli bit znaku jest równy 0, to liczba jest dodatnia i resztę zapisu możemy potraktować jak liczbę w systemie dwójkowym. Przykład 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ę (-2 n-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: Przykład 11101011 (U2) = (-2 7 ) +64+32+8+2+1 = -128 + 107 = (-21) (10). Liczba przeciwna do danej liczby U2 1. Przejść do pierwszego od prawej strony bitu zapisu liczby. 2. Do wyniku przepisać kolejne bity 0, aż do napotkania bitu o wartości 1, który również przepisać. 3. Wszystkie pozostałe bity przepisać zmieniając ich wartość na przeciwną. Liczba przeciwna do danej liczby U2 Znaleźć liczbę przeciwną w kodzie U2 do danej liczby 1100100010111010111010010100001000000 (U2). Analizę liczby rozpoczynamy ostatniej cyfry zapisu liczby. Przesuwamy się w lewą stronę. Do wyniku przepisujemy wszystkie kolejne bity o wartości 0, aż do napotkania bitu 1. 1100100010111010111010010100001000000 Napotkany bit 1 również przepisujemy do wyniku bez zmian: 1100100010111010111010010100001000000 Pozostałe bity przepisujemy zmieniając ich stan na przeciwny. To wszystko. Liczba przeciwna : 0011011101000101000101101011111000000

Liczba przeciwna do danej liczby U2 zadanie Przeliczanie dodatnich liczb dziesiętnych na zapis U2 Wyznaczyć liczbę przeciwną w kodzie U2 do liczby 01101110 (U2). Aby się przekonać czy wyliczona została poprawna wartość należy wyliczyć wartości dziesiętne obu liczb Znajdujemy reprezentację dwójkową danej wartości liczbowej, Uzupełniamy ją bitami 0 do długości formatu kodu U2. Przykład Wyznaczyć 8-mio bitowy kod U2 dla liczby dziesiętnej 27 (10). 27 (10) = 16 + 8 + 2 + 1 = 11011 (2) = 00011011 (U2). Przeliczanie ujemnych liczb dziesiętnych na zapis U2 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 zapisujemy w postaci kodu binarnego Przykład Wyznaczyć 8-mio bitowy kod U2 dla liczby dziesiętnej -45 (10). Reprezentacja liczb ze znakiem porównanie kodów Porównanie interpretacji wartości słów kodu binarnego w różnych systemach zapisu liczb ze znakiem 2 8 + (-45) = 256-45 = 211 = 11010011 (2). Stąd (-45) (10) = 11010011 (U2)

Liczby rzeczywiste Podejście stałoprzecinkowe zakładamy, że przecinek jest za prawym skrajnym (najmłodszym bitem) Obliczanie wartości liczby stałoprzecinkowej Zapis pozycyjny można w prosty sposób rozszerzyć na liczby ułamkowe wprowadzając pozycje o wagach ułamkowych. Dla liczb całkowitych w zapisie binarnym otrzymujemy zawsze dokładne wartości Kodowanie liczb rzeczywistych obarczone jest błędem Wagi pozycji Cyfry zapisu 10 3 3 10 2 5 10 1 7 10 0 9, 10-1 8 10-2 2 10-3 9 10-4 1 10-5 4 Numery pozycji 3 2 1 0-1 -2-3 -4-5 Część całkowita Część ułamkowa System pozycyjno-wagowy Liczbę stałoprzecinkową L w systemie pozycyjnym o podstawie (bazie) r zapisujemy w postaci: (a n-1 a 1 a 0 a -1 a -m ) r Unikalną reprezentacją liczby o wartości L jest zbiór cyfr {a n-1,,a 1,a 0,a -1,, a -m } takich, że n i L = ap i i= m P - podstawa systemu a kolejne cyfry w liczbie i indeks kolejnych cyfr Obliczanie dziesiętnej wartości liczby stałoprzecinkowej - przykład Obliczyć wartość liczby stałoprzecinkowej 213,132 (4). 213,132 (4) = 2 x 4 2 + 1 x 4 1 + 3 x 4 0 + 1 x 4-1 + 3 x 4-2 + 2 x 4-3 = 2 x 16 + 1 x 4 + 3 x 1 + 1 x 1 / 4 + 3 x 1 / 16 + 2 x 1 / 64 = 32 + 4 + 3 + 1 / 4 + 3 / 16 + 2 / 64 = 39 + 16 / 64 + 12 / 64 + 2 / 64 = 39 30 / 64

Obliczanie dziesiętnej wartości liczby stałoprzecinkowej - zadanie Obliczyć wartość liczby stałoprzecinkowej 537,462 (8). Uproszczenie Część ułamkową potraktujemy jako liczbę całkowitą, obliczymy jej wartość i pomnożymy ją przez wagę ostatniej cyfry zapisu stałoprzecinkowego. Przykład: Oblicz wartość liczby stałoprzecinkowej 0,4231 (5). 5-4 = 1 /625. 4231 (5) = 4 x 5 3 + 2 x 5 2 + 3 x 5 1 + 1 x 5 0 = 4 x 125 + 2 x 25 + 3 x 5 + 1 x 1 = 500 + 50 + 15 + 1 = 566 Zatem 0,4231 (5) = 566 x 1 / 625 = 566 / 625. Uproszczenie Przykład: oblicz wartość liczby stałoprzecinkowej 0,4231 (5). 0,4231 (5) = 0 x 5 0 + 4 x 5-1 + 2 x 5-2 + 3 x 5-3 + 1 x 5-4 = 0 x 1 + 4 x 1 / 5 + 2 x 1 / 25 + 3 x 1 / 125 + 1 x 1 / 625 = 0 + 4 / 5 + 2 / 25 + 3 / 125 + 1 / 625 = 500 / 625 + 50 / 625 + 15 / 625 + 1 / 625 = 566 / 625. n m p c i w Algorytm Hornera obliczania wartości liczby stałoprzecinkowej - liczba cyfr w części całkowitej - liczba cyfr w części ułamkowej - podstawa systemu pozycyjnego, w którym jest zapisana liczba -cyfra stojąca na i-tej pozycji. Pozycja o numerze 0 jest pierwszą pozycją od strony prawej. - obliczana wartość liczby 1. w 0 2. i n - 1 3. w c i + w x p 4. jeśli i = -m, to w w x p -m i kończymy 5. i i - 1 6. wróć do punktu 3

Algorytm Hornera - liczba stałoprzecinkowa - przykład Obliczyć przy pomocy algorytmu Hornera wartość dziesiętną liczby 237,745 zapisanej w systemie pozycyjnym o podstawie p=8. w 0 w 2 + 0 x 8 = 2 w 3 + 2 x 8 = 19 w 7 + 19 x 8 = 159 -------------------------------------------------- w 7 + 159 x 8 = 1279 (od tego momentu występują cyfry części ułamkowej) w 4 + 1279 x 8 = 10236 w 5 + 10236 x 8 = 81893 (ostatnia cyfra, kończymy) w 81893 x 1 / 512 = 159 485 / 512 = 159,947265625 Znajdowanie rozwinięcia liczby stałoprzecinkowej o podstawie p przykład Znaleźć rozwinięcie liczby 12 8 / 9 na system trójkowy z dokładnością do dwóch miejsc po przecinku. w 12 8 / 9 x 3 2 = 12 8 / 9 x 9 = 116 (mnożymy przez podstawę podniesioną do odpowiedniej potęgi) w 116 / 3 = 38 i reszta 2 w 38 / 3 = 12 i reszta 2 w 12 / 3 = 4 i reszta 0 w 4 / 3 = 1 i reszta 1 w 1 / 3 = 0 i reszta 1 (koniec) Otrzymaliśmy kolejne cyfry 11022. Dwie ostatnie cyfry umieszczamy po przecinku. Ostatecznie: 12 8 / 9 = 110,22 (3) Znajdowanie rozwinięcia liczby stałoprzecinkowej o podstawie p zadanie Znaleźć rozwinięcie liczby 1 / 10 na system dwójkowy z dokładnością do 8 miejsc po przecinku. Podpowiedź: w 1 / 10 x 2 8 = 1 / 10 x 256 = 256 / 10 = 26 (zaokrąglamy do najbliższej wartości całkowitej) Wady liczb stałoprzecinkowych nie możemy prosto zapisywać na niewielkiej liczbie bajtów bardzo dużych i bardzo małych liczb jeśli chcemy rozszerzyć zakres i liczbę miejsc po przecinku musimy używać bardzo dużej liczby bajtów trudny do oszacowania błąd obliczeń 26 / 2 = 13 i reszta 0 13 / 2 =

Zapis zmiennoprzecinkowy liczby rzeczywistej Zapis zmiennoprzecinkowy liczby rzeczywistej Zapis bardzo dużych lub bardzo małych liczb w normalnej notacji pozycyjnej jest niewygodny ponieważ wymaga dużej ilości cyfr, np. dwanaście bilionów: 12 000 000 000 000 trzydzieści trylionów: 30 000 000 000 000 000 000 jedna bilionowa: 0,000 000 000 001 Znacznie prostsze jest przedstawienie powyższych liczb w postaci zmiennoprzecinkowej (ang. floating point numbers) 12 000 000 000 000 = 1,2x10 13 30 000 000 000 000 000 000 = 3,0x10 19 0,000 000 000 001 = 1,0x10-12 Zapis zmiennoprzecinkowy: postać wykładnicza, notacja naukowa Zapis zmiennoprzecinkowy Zapis zmiennoprzecinkowy Liczba zapisana w systemie zmiennoprzecinkowym składa się z dwóch części: liczby stałoprzecinkowej, której wartość bezwzględna jest mniejsza od wartości podstawy systemu pozycyjnego (dokładność) podstawy podniesionej do pewnej potęgi zwanej wykładnikiem lub cechą (zakres) L = s x m x p c s znak liczby ( 1 lub -1) m mantysa (liczba ułamkowa), p podstawa systemu, c wykładnik potęgowy, czyli cecha (liczba całkowita)

Zapis zmiennoprzecinkowy Położenie przecinka w mantysie nie jest ustalone i może się dowolnie zmieniać. Poniższe zapisy oznaczają tę samą liczbę: 325 x 10 20 = 32,5 x 10 21 = 3,25 x 10 22 = 0,0325 x 10 24, itd. Zmiana położenia przecinka w mantysie wpływa na wartość cechy liczby. Przesunięcie przecinka o 1 pozycję w lewo wymaga zwiększenia cechy o 1. Przesunięcie przecinka o 1 pozycję w prawo wymaga zmniejszenia cechy o 1. Liczba zmiennoprzecinkowa - przykłady Przykład dla systemu dziesiętnego: 32.246 = 0.32246 10 2 0.000183 = 0.183 10 3 84239253.5 = 0.842392535 10 8 Wartość dziesiętna liczby zmiennoprzecinkowej - zadanie Obliczyć wartość zmiennoprzecinkowej liczby trójkowej 2,21 x 10 21 (3). Najpierw obliczmy wartości poszczególnych składników liczby zmiennoprzecinkowej pamiętając, iż każdy z nich jest zapisany w systemie trójkowym: m = 2,21 (3) = 2 x 3 0 + 2 x 3-1 + 1 x 3-2 = 2 + 2 / 3 + 1 / 9 = 2 7 / 9 p = 10 (3) = 1 x 3 1 + 0 x 3 0 = 3 e = 21 (3) = 2 x 3 1 + 1 x 3 0 = 2 x 3 + 1 = 6 + 1 = 7 Teraz wykorzystujemy podany wzór do wyznaczenia wartości dziesiętnej tej liczby: L = m x p e = 2 7 / 9 x 3 7 = 25 / 9 x 3 7 = 6075 Znormalizowana liczba zmiennoprzecinkowa Ponieważ liczbę zmiennoprzecinkową można zapisywać w różny sposób, przyjęto tzw. postać znormalizowaną. Znormalizowana liczba zmiennoprzecinkowa to taka, w której mantysa spełnia nierówność: p > m 1 Według tej definicji postacią znormalizowaną dla zapisów: 325 x 10 20 = 32,5 x 10 21 = 3,25 x 10 22 = 0,0325 x 10 24 jest jedynie zapis 3,25 x 10 22.

Jak zapisać liczbę w postaci zmiennoprzecinkowej? zapisujemy mantysę przy wykładniku równym zero normalizujemy mantysę modyfikując wykładnik liczby dodatkowo może nastąpić obcięcie albo zaokrąglenie mantysy do zadanej ilości cyfr, np. obcięcie: - zaokrąglenie: 1523,169(10) 1523,169 10 0 (10) 1,523169 10 3 (10) Obcięcie: 1,5232 10 3 (10) Zaokrąglenie: 1,5231 10 3 (10) Zmiennoprzecinkowe liczby binarne Liczby są kodowane w jednym słowie maszyny podzielonym na trzy części: znak liczby (zwykle 1 bit) jedna część (zwykle znacznie dłuższa) zawiera kod mantysy liczby i jej znak, druga część (kilkubitowa) - kod cechy liczby i jej znak. L = (-1) s x m 2 c S bit znaku ( 0 oznacza znak +, 1 znak - ) M znormalizowana liczba zapisana jako binarna liczba naturalna c wykładnik potęgi, czyli informacja o ile miejsc przesuwamy przecinek; może być dodatnia lub ujemna; jest zapisana w kodzie uzupełnień do 2. Zmiennoprzecinkowe liczby binarne W praktycznych realizacjach zapisu liczb zmiennoprzecinkowych przyjmuje się ograniczony zakres na mantysę i cechę Reprezentacja jest znormalizowana, tzn. bity mantysy są przesunięte tak, aby pierwsze miejsce po przecinku zajmował pierwszy znak 1 ciągu mantysy. Zmiennoprzecinkowe liczby binarne Zakodowana liczba zmiennoprzecinkowa ma postać: (0.5) 10 mantysa < 1 Z powyższego powodu liczba w zapisie zmiennoprzecinkowym jest określona z pewną dokładnością i może występować tylko w określonym zakresie

Błąd zaokrąglenia Wystąpi wtedy, gdy część wartości liczby zostaje utracona w wyniku braku wystarczającej długości mantysy. Format IEEE 754 Aby ujednolicić wyniki obliczeń numerycznych wykonywanych na różnych platformach sprzętowych, wprowadzono ściśle określony standard zapisu zmiennoprzecinkowego IEEE 754. Pełna nazwa standardu to: IEEE Standard for Binary Floating-Point Arithmetic (ANSI/IEE Std 754-1985) Obecnie praktycznie wszystkie implementacje sprzętowe liczb zmiennoprzecinkowych oparte są o ten standard Format IEEE 754 Format IEEE 754 Standard IEEE 754 definiuje dwie podstawowe klasy liczb zmiennoprzecinkowych: 32 bitowe - pojedynczej precyzji (ang. single-precision) 64 bitowe - podwójnej precyzji (ang. double-precision) Format 32 bity - pojedyncza precyzja 64 bity - pojedyncza precyzja Bit znaku 1 bit 1 bit Bity cechy 8 bitów 11 bitów Bity mantysy 23 bity 52 bity W standardzie IEEE 754 zdefiniowane zostały także inne klasy liczb zmiennoprzecinkowych: pojedynczej rozszerzonej precyzji (ang. single-extended precision) liczby 43-bitowe, nie są powszechnie stosowane podwójnej rozszerzonej precyzji (ang. double-extended precision) liczby 79-bitowe, zazwyczaj implementowane jako 80-bitowe

Format IEEE 754 Format IEEE 754 Standard IEEE 754 definiuje także trzy formaty stałoprzecinkowe dwójkowe i jeden stałoprzecinkowy format dziesiętny BCD: 16-bitowy format całkowity (ang. short integer) 32-bitowy format całkowity (ang. integer) 64-bitowy format całkowity (ang. extended integer) 80-bitowy format dziesiętny BCD (kodowanie 18- cyfrowej liczby całkowitej dziesiętnej oraz znaku na najbardziej znaczącej pozycji) Standard IEEE 754 definiuje nie tylko sposób reprezentacji liczb, ale także: sposób reprezentacji specjalnych wartości, np. nieskończoności, zera sposób wykonywania działań na liczbach zmiennoprzecinkowych sposób zaokrąglania liczb Norma IEEE 754 jest standardem dwójkowym, w którym wymaga się, aby bazą wszystkich reprezentacji było 2 Format IEEE 854 Istnieje także norma IEEE 854 będąca standardem uniwersalnym, niezależnym od bazy : obejmuje arytmetykę dwójkową i dziesiętną nie precyzuje dokładnie przyporządkowania poszczególnych bitów ani sposobu kodowania liczb zmiennoprzecinkowych Przykład Chcemy zapisać liczbę 1984.0415 w kodzie zmiennoprzecinkowym pojedynczej precyzji: Przeliczamy liczbę 1984.0415: 1984 = 111110000002 0,0415 = 0.000010101012 1984.0415 = 11111000000.00001010101 Dokonujemy normalizacji czyli przesuwamy przecinek tak, aby przed przecinkiem znajdowała się tylko jedna niezerowa cyfra. Wychodzi coś takiego: 1.111100000000001010101

Przykład Przykład Ostatecznie mantysę utworzą kolejne cyfry spisane od przecinka dotąd, dokąd zmieszczą się w przyjętej długości mantysy (u nas 23 bity). Gdybyśmy mięli mniej cyfr, niż jest potrzebne, mantysę uzupełnia się zerami z prawej strony. Czyli uzupełniamy 11111000000 do 23 bitów: 11110000000000000000000 Teraz zajmiemy się cechą. Pamiętamy, że przecinek przesunęliśmy o 10 miejsc w lewo. Jako cechę trzeba więc będzie zapisać liczbę 10 w kodzie U2. Ostatecznie cecha wygląda tak: c = (01010) U2 Mamy już wszystkie części liczby. 1984.0415 = 0 01010 1111000000