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

Podobne dokumenty
Pracownia Komputerowa wykład VI

Zapis liczb binarnych ze znakiem

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

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

Podstawy Informatyki

Pracownia Komputerowa wykład V

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

Pracownia Komputerowa wyk ad VI

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

Wprowadzenie do informatyki - ć wiczenia

Zestaw 3. - Zapis liczb binarnych ze znakiem 1

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

Reprezentacja stałoprzecinkowa. Reprezentacja zmiennoprzecinkowa zapis zmiennoprzecinkowy liczby rzeczywistej

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

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

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

Systemy zapisu liczb.

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

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

Teoretyczne Podstawy Informatyki

Techniki multimedialne

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

Kod U2 Opracował: Andrzej Nowak

Wstęp do Informatyki

Technologie Informacyjne

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

Arytmetyka binarna - wykład 6

Metoda znak-moduł (ZM)

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

Pracownia Komputerowa wykład IV

Pracownia Komputerowa wyk ad V

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

Naturalny kod binarny (NKB)

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

Wprowadzenie do informatyki - ć wiczenia

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

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

Stan wysoki (H) i stan niski (L)

Kodowanie informacji. Kody liczbowe

ARCHITEKRURA KOMPUTERÓW Kodowanie liczb ze znakiem

Pracownia Komputerowa wyk ad IV

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

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

Architektura komputerów

dr inż. Jarosław Forenc

Architektura komputerów

PODSTAWY INFORMATYKI. Informatyka? - definicja

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

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

Podstawy Informatyki

INFORMATYKA. Zajęcia organizacyjne. Arytmetyka komputerowa.

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

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

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

architektura komputerów w. 2

Pozycyjny system liczbowy

Arytmetyka liczb binarnych

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

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

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

SYSTEMY LICZBOWE 275,538 =

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

Metody numeryczne II. Reprezentacja liczb

SYSTEMY LICZBOWE. Zapis w systemie dziesiętnym

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

LICZBY ZMIENNOPRZECINKOWE

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

ARCHITEKTURA KOMPUTERÓW Liczby zmiennoprzecinkowe

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

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

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

Wstęp do Informatyki. Reprezentacja liczb w komputerze Arytmetyka stało- i zmiennoprzecinkowa Przechowywanie danych pliki i foldery

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

Wprowadzenie do informatyki - ć wiczenia

1.1. Pozycyjne systemy liczbowe

System Liczbowe. Szesnastkowy ( heksadecymalny)

Met Me ody numer yczne Wykład ykład Dr inż. Mic hał ha Łan Łan zon Instyt Ins ut Elektr Elektr echn iki echn i Elektrot Elektr echn olo echn

Cyfrowy zapis informacji

Operacje arytmetyczne

Arytmetyka komputera

Pracownia Komputerowa wyk ad VII

Arytmetyka stało i zmiennoprzecinkowa

Adam Korzeniewski p Katedra Systemów Multimedialnych

Kodowanie liczb. Reprezentacja liczb całkowitych. Standard IEEE 754. dr inż. Jarosław Forenc

Architektura komputerów

Wprowadzenie do informatyki - ć wiczenia

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

Adam Korzeniewski p Katedra Systemów Multimedialnych

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

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

Informatyka 1. Wykład nr 4 ( ) Plan wykładu nr 4. Politechnika Białostocka. - Wydział Elektryczny

Dodatek do Wykładu 01: Kodowanie liczb w komputerze

Kodowanie informacji. Przygotował: Ryszard Kijanka

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

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

Informatyka kodowanie liczb. dr hab. inż. Mikołaj Morzy

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

DZIESIĘTNY SYSTEM LICZBOWY

L6.1 Systemy liczenia stosowane w informatyce

Technologie Informacyjne Wykład 4

Transkrypt:

Dr inż. Grażyna KRUPIŃSKA Grazyna.Krupinska@fis.agh.edu.pl D-10 pokój 227 WYKŁAD 2 WSTĘP DO INFORMATYKI

Ćwiczenia i laboratorium 2 Kolokwia zaliczeniowe - 1 termin - poniedziałek, 29 stycznia 2018 11:30 13:30 sala A, B 2 termin - poniedziałek, 12 lutego 2018 09:30 11:30 sala A

Liczby stałoprzecinkowe 3 Do zapisu przeznaczona jest z góry określona ilość bitów. Pozycję przecinka ustala się arbitralnie, w zależności od wymaganej dokładności. Wartość liczby stałoprzecinkowej jest równa sumie iloczynów jej cyfr przez wagi pozycji tych cyfr. 1 n m i i c i p m n n c c c c c c c c...,... 2 1 0 1 2 2 1 m m n n p c p c p c p c p c p c...... 2 2 1 1 0 0 1 1 1 1

Liczby stałoprzecinkowe 4 213,132 (4) 213,132 (4) = 2 4 2 + 1 4 1 + 3 4 0 + 1 4-1 + 3 4-2 + 2 4-3 213,132 (4) = 2 16 + 1 4 + 3 1 + 1 1 / 4 + 3 1 / 16 + 2 1 / 64 213,132 (4) = 32 + 4 + 3 + 1 / 4 + 3 / 16 + 2 / 64 213,132 (4) = 39 + 16 / 64 + 12 / 64 + 2 / 64 213,132 (4) = 39 30 / 64

Liczby stałoprzecinkowe 5 Zakres liczb o n bitach części całkowitej i m bitach części ułamkowej. C max = 2 n 1 L max = C max + U max U max = 1 2-1 + 1 2-2 + 1 2-3 +... + 1 2 -m U max = 1 / 2 + 1 / 4 = 1-1 / 4 U max = 1 / 2 + 1 / 4 + 1 / 8 = 1-1 / 8 U max = 1 / 2 + 1 / 4 + 1 / 8 +.. +... + 1 / 2 -m = 1-1 / 2 -m = (2 m - 1)/2 m 0, 2 n 1 + 2m 1 2 m

6 Dokładność reprezentacji stałoprzecinkowej Dla reprezentacji 4-bitowe części ułamkowej 0,0001 (2) = 0,0625 (10) 0,0010 (2) = 0,125 (10) 0,0011 (2) = 0,1875 (10) 0,0100 (2) = 0,25 (10).. 0,0111 (2) = 0,4375 (10) 0,1000 (2) = 0,5 (10) 0,1110 (2) = 0,875 (10) 0,1111 (2) = 0,9375 (10)

Liczby stałoprzecinkowe 7 Konwersja z systemu dziesiętnego na system dwójkowy Część ułamkowa : Dopóki nie otrzymamy w wyniku zera lub zakładanej dokładności część ułamkową mnożymy przez 2 część całkowitą wyniku jest kolejna cyfrą zapisu część ułamkowa przechodzi do następnego mnożenia Część całkowita jak w NCB

Liczby stałoprzecinkowe 8 Przeliczamy 2,21 (10) na system binarny do 4 miejsc po przecinku. 2,21 (10) = 2 (10) + 0,21 (10) 0,21 x 2 = 0,42 cyfra 0 0,42 x 2 = 0,84 cyfra 0 0,84 x 2 = 1,68 cyfra 1 0,68 x 2 = 1,36 cyfra 1 4 miejsca po przecinku 2,21 (10) 10 (2) + 0,0011 (2) = 2,1875 (10)

Liczby stałoprzecinkowe 9 Przeliczamy 1/10 (10) na system binarny do 8 miejsc po przecinku. 1 / 10 x 2 8 = 1 / 10 x 256 = 256 / 10 25 25 / 2 = 12 r 1 12 / 2 = 6 r 0 6 / 2 = 3 r 0 3 / 2 = 1 r 1 1 / 2 = 0 r 1 tutaj mnożyliśmy (zaokrąglamy do wartości całkowitej) tutaj dzielimy przesuwamy przecinek w systemie dwójkowym rozwinięcie wartości 1 / 10 1 / 10 =0, 00001101 (0,000110011001100110011... (2) )

Kodowanie liczb ze znakiem 10 Mamy z góry ustaloną liczbę cyfr używanych do zapisu wartości, np. 8, 16, 24, 32,... Najstarszy bit ma inne znaczenie niż reszta cyfr - pełni funkcję bitu znaku. Bit znaku równy 0 liczba jest dodatnia Bit znaku równy 1 liczba jest ujemna

Kod ZNAK-MODUŁ 11 Liczba ZM składa się z dwóch części 1. bitu znaku 2. bitów wartości liczby (modułu) w naturalnym kodzie dwójkowym NBC. c n c c c c 1 n 2... 2 1 0

Kod ZNAK-MODUŁ 12 Liczba ZM składa się z dwóch części 1. bitu znaku 2. bitów wartości liczby (modułu) w naturalnym kodzie dwójkowym NBC. bit znakowy c n c c c c 1 n 2... 2 1 0 moduł liczby

Kod ZNAK-MODUŁ 13 L ZM = (-1) bit znaku moduł liczby b n-1 b n-2...b 2 b 1 b 0 = (-1) b n-1 (b n-2 2 n-2 +... + b 2 2 2 + b 1 2 1 + b 0 2 0 )

Kod ZNAK-MODUŁ 14 Zakres n bitowej liczby w kodzie ZM [-2 n-1 + 1, 2 n-1 1] Liczba przeciwna w kodzie ZM powstaje przez zmianę bitu znakowego

15 Kod ZNAK-MODUŁ zamiana liczby dwójkowej na dziesiętną 0101 (z-m) = (-1 0 ) x (1 2 0 + 0 2 1 + 1 2 2 ) 0101 (z-m) = (-1 0 ) x (1 1 + 0 2 + 1 4) 0101 (z-m) = 1 ( 1+ 4) 0101 (z-m) = 5 (10) 1101 (z-m) = (-1 1 ) (1 2 0 + 0 2 1 + 1 2 2 ) 1101 (z-m) = (-1 1 ) (1 1 + 0 2 + 1 4) 1101 (z-m) = -1 (1 + 4) 1101 (z-m) = -5 (10)

16 Kod ZNAK-MODUŁ zamiana liczby dziesiętnej na dwójkową znajdujemy przedstawienie dwójkowe modułu tej wartości, uzupełniamy bity do zadanego formatu i dodajemy bit znaku liczba = -49 8 bitów 49 / 2 = 24 r 1 24 / 2 = 12 r 0 12 / 2 = 6 r 0 6 / 2 = 3 r 0 3 / 2 = 1 r 1 1 / 2 = 0 r 1 49 (10) = 0011 0001 (2) -49 (10) = 1011 0001 (2)

Kod ZNAK-MODUŁ 17 57 10 0 0 1 1 1 0 0 1 ZM +( -13 10 ) + 1 0 0 0 1 1 0 1 ZM -69 10 1 1 0 0 0 1 1 0 ZM 57 10 0 0 1 1 1 0 0 1 ZM -13 10-1 0 0 0 1 1 0 1 ZM 44 10 0 0 1 0 1 1 0 0 ZM

Kod ZNAK-MODUŁ 18 Reguły dodawania liczb w kodzie ZM wynik = a (ZM) + b (ZM) znak a (ZM) znak b (ZM) operacja znak wyniku 0 0 dodawanie modułów 0 1 1 dodawanie modułów 1 0 1 1 0 moduł większy - moduł mniejszy znak większego modułu

Kod ZNAK-MODUŁ 19 Reguły odejmowania liczb w kodzie ZM wynik = a (ZM) - b (ZM) znak a (ZM) znak b (ZM) operacja znak wyniku 0 1 1 0 dodawanie modułów dodawanie modułów 0 0 odejmowanie modułu mniejszego od 1 1 modułu większego 0 1 Znak a (ZM), jeśli moduł ten jest większy od modułu b (ZM). Inaczej znak

20 znak a (ZM) znak operacja znak wyniku b (ZM) Kod ZNAK-MODUŁ 0 1 1 0 0 0 1 1 dodawanie modułów dodawanie modułów odejmowanie modułu mniejszego od modułu większego 0 1 Znak a (ZM), jeśli moduł ten jest większy od modułu b (ZM). Inaczej znak przeciwny. 3-2 0 011-0 010 0 001 1 (-3) - (-4) 1 100-1 011 0 001 0 2 - (-3) 0 010 + 1 011 0 101 5 (-5) - 2 1 101 + 0 010 1 111 (-7)

21 Kod ZNAK-MODUŁ Zakres liczb reprezentowanych w n-bitowym kodzie Z-M [-2 n-1 +1, 2 n-1-1] Kod Z-M koncepcyjnie prosty, ale stwarza problemy przy wykonywaniu operacji arytmetycznych Niejednoznaczna wartość 0 - dwa słowa kodowe Bit znakowy ma zupełnie inne znaczenie niż pozostałe bity i nie uczestniczy w operacjach arytmetycznych

Kod ZNAK-MODUŁ 22 Stałoprzecinkowe liczby w kodzie ZM moduł liczby ZM to dwójkowa liczba stałoprzecinkowa. 1001,1101 (z-m) 1001,1101 (z-m) 001,1101 (2) = 1 13 / 16 1001,1101 (z-m) ) = - 1 13 / 16

Kod ZNAK-MODUŁ 23 Stałoprzecinkowe liczby w kodzie ZM moduł liczby ZM to dwójkowa liczba stałoprzecinkowa. -3,75 moduł = 3,75 3,75 (10) = 11,11 (2) Reprezentacja 8-mio bitowa znak + 7 bitów moduł (4 po przecinku) 11,11 = 011,1100-3,75 (10) = 1011,1100 (ZM)

24 System uzupełnień System uzupełnień do podstawy wymyślił Blaise Pascal. Aby umożliwić wykonywanie odejmowania, Pascal dodawał liczby uzupełnione do podstawy 10. 84-55 Uzupełnienie dziesiętne liczby 55 to 45 84 55 +100-100 = 84 + (100-55) -100 = 129-100 84 55 = 29

25 Kod uzupełnień do 1 (U1) 1. Wszystkie bity zapisu liczby posiadają swoje wagi. 2. Najstarszy bit jest bitem znaku i ma wagę równą (-2 n-1 +1) 3. Pozostałe bity posiadają wagi takie jak w NBC c n 2 n 1 1 2... 2 1 0 (U1) 1 2 1) i n cn c c c cn ci 2 i 0 ( (10)

26 Kod uzupełnień do 1 (U1) 1. Wszystkie bity zapisu liczby posiadają swoje wagi. 2. Najstarszy bit jest bitem znaku i ma wagę równą (-2 n-1 +1) 3. Pozostałe bity posiadają wagi takie jak w NBC c n 2 n 1 1 2... 2 1 0 (U1) 1 2 1) i n cn c c c cn ci 2 i 0 ( (10)

Kod uzupełnień do 1 (U1) 27 Zakres n bitowej liczby w kodzie U1 [-2 n-1 + 1, 2 n-1 1] Zakres ten jest identyczny z zakresem liczb w kodzie ZM. Liczba przeciwna powstaje w kodzie U1 przez negację wszystkich bitów

Przeliczanie liczb dziesiętnych na U1 28 dodatnie znajdujemy reprezentację liczby w NBC i uzupełniamy bitami o wartości 0 do uzyskania zadanej liczby bitów wymaganej przez przyjęty format zapisu U1.

Przeliczanie liczb dziesiętnych na U1 29 ujemne obliczamy moduł liczby; moduł przedstawiamy w naturalnym systemie dwójkowym uzupełniając go bitami o wartości 0 do długości przyjętego formatu U1; wszystkie bity zamieniamy na przeciwne. -113 (10) 113 (10) = 1110001 (2) 01110001 (2) 10001110 (U1)

Przeliczanie liczb dziesiętnych na U1 30 ujemne wyznaczamy wartość (2 n 1) + liczba, gdzie n oznacza liczbę bitów w przyjętym formacie U1. wartość kodujemy w NCB i otrzymujemy kod U1 liczby wyjściowej.. -113 (10) (8 bitów) 2 8-1 + (-113) = 256 1 113 = 142 142 (10) = 10001110 (2) -113 (10) = 10001110 (U1)

Dodawanie liczb w kodzie U1 31 Dodawanie wykonuje się zgodnie z zasadami dodawania dwójkowego. Jeśli występuje przeniesienie poza bit znaku, to do wyniku należy dodać 1. 1 1 1 1 0 0 1 1 +3 + 0 0 1 0 +2 0 1 0 1 +5 0 0 1 0 +2 + 1 1 1 0-1 0 0 0 0 + 0 0 0 1 0 0 0 1 1

Kod uzupełnień U1 32 Zakres liczb reprezentowanych w n-bitowym kodzie U1 taki sam jak Z-M [-2 n-1 + 1, 2 n-1 1] Operacje arytmetyczne nadal wymagają dodatkowych operacji Niejednoznaczna wartość 0 ma dwa słowa kodowe

Kod uzupełnień U1 33 Stałoprzecinkowe dodatnie - stosujemy poznane zasady wyznaczania wartości liczby 0111,1101 (U1) = 2 2 + 2 1 + 2 0 + 2-1 + 2-2 + 2-4 0111,1101 (U1) = 4 + 2 + 1 + 1 / 2 + 1 / 4 + 1 / 16 0111,1101 (U1) = 7 13 / 16

Kod uzupełnień U1 34 Stałoprzecinkowe ujemne - wyraz zbudowany z samych jedynek jest zawsze równy 0 111...111,111...111 = 0 n m waga bitu znakowgo U1 = -(max części całkowitej + max części ułamkowej )

Kod uzupełnień U1 35 Stałoprzecinkowe ujemne - wyraz zbudowany z samych jedynek jest zawsze równy 0 111...111,111...111 = 0 n m waga bitu znakowgo U1 = -(max części całkowitej + max części ułamkowej ) max części całkowitej = 2 n-1-1 max części ułamkowej = 2m 1 2 m

Kod uzupełnień U1 36 111...111,111...111 = 0 n m max części całkowitej = 2 n-1 1 max części ułamkowej = 2m 1 2 m waga bitu znakowgo U1 = -(2 n-1 1 + 2m 1 2 m )

Kod uzupełnień U1 37 111...111,111...111 = 0 n m waga bitu znakowgo U1 = -(2 n-1 1 + 2m 1 2 m ) 1011,1011 (U1) n = 4; m = 4, waga znakowa -(2 3-1 + 24 1 ) = -7 15 2 4 16 1011,1011 (U1) = -7 15 + 3 + 11 16 16 1011,1011 (U1) = -4 4 16

38 Kod uzupełnień U2 1. Wszystkie bity zapisu liczby posiadają swoje wagi. 2. Najstarszy bit jest bitem znaku i ma wagę ujemną równą (-2 n-1 ) 3. Pozostałe bity posiadają wagi takie jak w NBC c n 2 n 1 i n 1cn 2... c2c1c0 cn 1( 2 ) ci 2 i 0

Kod uzupełnień U2 39 c n 2 n 1 i n 1cn 2... c2c1c0 cn 1( 2 ) ci 2 i 0 01101011 (U2) = 64 + 32 + 8 + 2 + 1 = 107 (10 ) 11101011 (U2) = -2 7 + 64 + 32 + 8 + 2 + 1 = -128 + 107 = (-21) (10)

Kod uzupełnień U2 40 Zakres n bitowej liczby w kodzie U1 [-2 n-1... 2 n-1 1] Zakres ten jest niesymetryczny. Dla reprezentacji 8-bitowej 01111111 (U2) =2 7 1=127 10000000 (U2) = 2 7 = 128

Kod uzupełnień U2 41 Liczba przeciwna zanegowanie wszystkich bitów zapisu liczby U2 dodanie 1 01101110 (U2) 64 + 32 + 8 + 4 + 2 = 110 (10) 10010001 + 00000001 10010010 NOT 01101110 10010001 (-128) + 16 + 2 = (-128) + 18 = (-110) (10)

Kod uzupełnień U2 42 Liczba przeciwna przejść do pierwszego od prawej strony bitu zapisu liczby; do wyniku przepisać kolejne bity 0, aż do napotkania bitu o wartości 1, który również przepisać; wszystkie pozostałe bity przepisać zmieniając ich wartość na przeciwną.

Kod uzupełnień U2 43 01101110 (U2) Liczba U2 01101110 Liczba przeciwna U2 0 Liczba U2 01101110 Liczba przeciwna U2 10 Liczba U2 01101110 Liczba przeciwna U2 10010010

44 Przeliczanie liczb dziesiętnych na kod U2 dodatnia - znajdujemy jej przedstawienie binarne i uzupełniamy zerami do przyjętego formatu. 3 (10) = 0011 (U2 ) ujemna - bit znaku ma wartość 1. Ponieważ stoi on na pozycji o wadze -2 n-1, a reszta liczby jest dodawana do tej wagi, to musimy znaleźć taką wartość, która dodana do wagi bitu znaku da nam liczbę kodowaną. Wartość tą kodujemy na pozostałych bitach.

45 Przeliczanie liczb dziesiętnych ujemnych na U2-3 (10) w 4-bitowym kodzie U2. Bit znaku ma wartość -2 3, czyli -8. Aby otrzymać -3, do -8 musimy dodać liczbę 5 i tą wartość kodujemy na pozostałych bitach: -8 + 5 = -3-3 (10) = 1101 (U2) liczba -45 (10) w 8-bitowym kodzie U2. Bit znaku ma wartość -2 7, czyli -128-128 + 45 = 83 = 1010011 (2) -45 (10) = 11010011 (U2)

46 Przeliczanie liczb dziesiętnych ujemnych na U2 wyznaczamy zapis dwójkowy liczby przeciwnej (czyli dodatniej); otrzymany kod dwójkowy uzupełniamy do rozmiaru formatu U2. wyznaczamy liczbę przeciwną -45 (10) 45 (10) =101101 (2) =00101101 (U2) 11010011 (U2)

47 Przeliczanie liczb dziesiętnych ujemnych na U2 do liczby 2 n (n - ilość bitów w formacie U2) dodajemy przetwarzaną liczbę dziesiętną, w wyniku otrzymujemy wartość kodu dwójkowego równoważnego bitowo kodowi U2 przetwarzanej liczby; wynik dodawania zapisujemy w postaci naturalnego kodu dwójkowego 2 8 + (-45) = 256-45 = 211 = 11010011 (U2)

Kod uzupełnień U2(liczby czterobitowe) 48 3 +2 5 Dodawanie: 0011 +0010 0101-6 +(-3) 7 1010 +1101 10111 Niedomiar (-3) +(-2) -5 7 +(-5) 2 1101 + 1110 1 1011 0111 + 1011 1 0010 7 +1-8 0111 +0001 1000 Nadmiar

49 Kod uzupełnień U2 Uzupełnieniem dwójkowym liczby x zapisanej za pomocą n bitów nazywamy liczbę x U2 =2 n -x x = 0101 x U2 =2 4 -x = 10000 00101 =01011 y = 1011 y U2 =2 4 -y = 10000 01011 =00101 y U2 = x czyli ( x U2 ) U2=x

Kod uzupełnień U2 50 Zakres liczb reprezentowanych w n-bitowym kodzie U2 niesymetryczny [-2 n-1, 2 n-1 1] Operacje arytmetyczne nie wymagają dodatkowych operacji Jednoznaczna wartość 0

Kod uzupełnień U1 51 Stałoprzecinkowe dodatnie - stosujemy poznane zasady wyznaczania wartości liczby 0110,1011 (U2) = 2 2 + 2 1 + 2-1 + 2-3 + 2-4 0110,1011 (U2) = 4 + 2 + 1 + 1 / 2 + 1 / 8 + 1 / 16 0110,1011 (U2) = 6 11 / 16

Kod uzupełnień U1 52 Stałoprzecinkowe ujemne - stosujemy poznane zasady wyznaczania wartości liczby 1101,0011 (U2) = (-2 3 ) + 2 2 + 2 0 + 2-3 + 2-4 1101,0011 (U2) = (-8) + 4 + 1 + 1 / 8 + 1 / 16 1101,0011 (U2) = -(2 13 / 16 )

Notacja nadmiarowa 53 Kolejność 3 bitowych słów kodowych 000 001 010 011 100 101 110 111 NBC 0 1 2 3 4 5 6 7 U1 0 1 2 3-3 -2-1 0 ZM 0 1 2 3 0-1 -2-3 U2 0 1 2 3-4 -3-2 -1

Notacja nadmiarowa 54 Wartość binarna słowa kodowego jest równa kodowanej liczbie pomniejszonej o pewną stałą zwaną nadmiarem (ang. excess lub bias) KOD Wartości słów kodowych w systemach z nadmiarem Wartości nadmiaru - bias 4 3 2 1 0 (-1) (-2) (-3) (-4) 000-4 -3-2 -1 0 1 2 3 4 001-3 -2-1 0 1 2 3 4 5 010-2 -1 0 1 2 3 4 5 6 011-1 0 1 2 3 4 5 6 7 100 0 1 2 3 4 5 6 7 8 101 1 2 3 4 5 6 7 8 9 110 2 3 4 5 6 7 8 9 10 111 3 4 5 6 7 8 9 10 11

Notacja nadmiarowa 55 Wartość dziesiętna liczby zapisanej w dwójkowym kodzie z nadmiarem b n-1 b n-2...b 2 b 1 b 0 (BIAS) = b n-1 2 n-1 + b n-2 2 n-2 +... + b 2 2 2 + b 1 2 1 + b 0 2 0 - bias gdzie b - bit, cyfra dwójkowa 0 lub 1 n - liczba bitów w zapisie liczby bias - nadmiar, odchyłka w stosunku do naturalnych wartości słów kodowych 00011111 (BIAS=63) = 2 4 + 2 3 + 2 2 + 2 1 + 2 0-63 00011111 (BIAS=63) = 31-63 00011111 (BIAS=63) = (-32) (10)

Notacja nadmiarowa 56 15 1111 7 14 1110 6 13 1101 5 12 1100 4 11 1011 3 10 1010 2 9 1001 1 8 1000 0 7 0111-1 6 0110-2 5 0101-3 4 0100-4 3 0011-5 2 0010-6 1 0001-7 0 0000-8 Excess 8 Notation: Aby zakodować liczbę dziesiętną należy: 1. dodać do niej wartość 8, 2. zapisać wynik w postaci binarnej, 3. uzupełnić o brakujące początkowe zera.

57 Liczby duże i małe Zapisywanie liczb oznaczających bardzo duże lub bardzo małe wartości notacja naukowa. Gwiazda Proxima Centauri znajduje się w odległości 9460800000000 [km], 9,4608 x 10 12. Masa elektronu wynosi me = 0,00000000000000000000000000091095 [g], czyli 9,1095 x 10-28 [g]

58 Zapis zmiennopozycyjny Liczba w tym zapisie składa się z trzech części: liczby stałoprzecinkowej podstawy systemu potęgi zwanej wykładnikiem lub cechą. L = m * p c m mantysa p podstawa systemu c cecha - wykładnik potęgowy

59 Zapis zmiennopozycyjny L = m * p c 325 10 20 = 32,5 10 21 = 3,25 10 22 = 0,325 10 23 = dokładność liczby wielkość liczby Znormalizowana liczba zmiennoprzecinkowa to taka, w której mantysa spełnia nierówność: p > m 1

60 Zapis zmiennopozycyjny L = m * p c Przykład 8-bitowy zapis liczby 01101101 bit znaku; cecha kodowana z nadmiarem 4 na 3 bitach; mantysa na 4 bitach; 0 1 1 0 1 1 0 1 liczba dodatnia cecha 110 (BIAS=4) =6-4=2 mantysa.1101 11.01 czyli 3 1 4

61 Zapis zmiennopozycyjny L = m * p c Przykład 8-bitowy zapis liczby 10111100 1 0 1 1 1 1 0 0 liczba ujemna cecha 011 (BIAS=4) =3-4=-1 mantysa.1100 0.1100 czyli 3 8

62 Zapis zmiennopozycyjny L = m * p c Przykład +2 3 4 1 0. 1 1 0 1 0 1 1 cecha powinna mieć wartość 2, (2 + 4 = 6) czyli 110 (BIAS=4) 0 1 1 0 1 0 1 1

63 Zapis zmiennopozycyjny L = m * p c Przykład 2.625= 2 5 8 1 0. 1 0 1 utracony bit 0 1 0 1 0 cecha powinna mieć wartość 2, (2 + 4 = 6) czyli 110 (BIAS=4) 0 1 1 0 1 0 1 0 czyli 2 4 8 a nie 2 5 8

64 Standard zapisu zmiennoprzecinkowego IEEE 754 Standard IEEE 754 definiuje dwa rodzaje liczb zmiennoprzecinkowych: 32-bitowe (pojedynczej precyzji - ang. single precision) 64-bitowe (podwójnej precyzji - ang. double precision). Format zapisu zmiennoprzecinkowego IEEE 754 L = m * p c 32 bity (1 bit) b 31 (8 bitów) b 30... b 23 (BIAS=127) (23 bity)b 22... b 0 (U1) 64 bity (1 bit) b 63 (11 bitów) b 62... b 52 (BIAS=1023) (52 bity)b 51... b 0 (U1) Opis pół bitowych bit znaku bity kodu cechy bity mantysy

65 Standard zapisu Zapis cechy w notacji nadmiarowej umożliwia szybkie porównywanie liczb 00101010 > 00011001 zmiennoprzecinkowego IEEE 754 Format zapisu zmiennoprzecinkowego IEEE 754 32 bity (1 bit) b 31 (8 bitów) b 30... b 23 (BIAS=127) (23 bity)b 22... b 0 (U1) 64 bity (1 bit) b 63 (11 bitów) b 62... b 52 (BIAS=1023) (52 bity)b 51... b 0 (U1) Opis pół bitowych bit znaku bity kodu cechy bity mantysy Wzrost ilości bitów cech liczb zmiennoprzecinkowych wpływa na ich zakres. L = m * p c L = m * p c Wzrost liczby bitów mantys wpływa na ich precyzję, czyli dokładność odwzorowywania liczb rzeczywistych.

66 Standard zapisu zmiennoprzecinkowego IEEE 754 Format zapisu zmiennoprzecinkowego IEEE 754 Mantysy są zapisywane w stałoprzecinkowym kodzie U1. 32 bity (1 bit) b 31 (8 bitów) b 30... b 23 (BIAS=127) (23 bity)b 22... b 0 (U1) Mantysa jest prawie zawsze znormalizowana (p>m 1 ) - jej wartość liczbowa zawiera się pomiędzy 1 a 2. 64 bity (1 bit) b 63 (11 bitów) b 62... b 52 (BIAS=1023) (52 bity)b 51... b 0 (U1) Opis pół bitowych bit znaku bity kodu cechy bity ułamkowe bity mantysy mantysy Pierwszy bit całkowity mantysy zawsze wynosi 1 => zapamiętujemy tylko bity ułamkowe. Mantysa dłuższa o jeden bit - zwiększamy jej rozdzielczość do 24 bitów dla formatu pojedynczej precyzji i do 53 bitów dla formatu podwójnej precyzji.

67 Standard zapisu zmiennoprzecinkowego IEEE 754 Z kodu wydzielamy poszczególne pola Do odczytanej mantysy dodajemy na początku 01 i przecinek - otrzymujemy dodatnią liczbę stałoprzecinkową w kodzie U1. Obliczamy wartość cechy i mantysy, a następnie wyliczamy wartość liczby wg wzoru: L (IEEE 754) = m * p c = (-1) z *m*2 c 01000010110010000000000000000000 10010000000000000000000 (IEEE 754) ) z = 0 - liczba jest dodatnia c = 10000101 (BIAS=127) = 133-127 = 6 m = 01,10010000000000000000000 (U1) = 1 9 / 16

68 Standard zapisu zmiennoprzecinkowego IEEE 754 Z kodu wydzielamy poszczególne pola L (IEEE 754) = (-1) z * m * 2 c = (-1) 0 * 1 9 / 16 * 2 6 = 25 / 16 * 2 6 = Do 25 odczytanej * 2 2 = 25 * 4 mantysy = 100 (10) dodajemy na początku 01 i przecinek - 01000010110010000000000000000000 otrzymujemy dodatnią liczbę stałoprzecinkową (IEEE w 754) kodzie = 100 U1. (10) Obliczamy wartość cechy i mantysy, a następnie wyliczamy wartość liczby wg wzoru: L (IEEE 754) = m * p c = (-1) z *m*2 c 01000010110010000000000000000000 10010000000000000000000 (IEEE 754) ) z = 0 - liczba jest dodatnia c = 10000101 (BIAS=127) = 133-127 = 6 m = 01,10010000000000000000000 (U1) = 1 9 / 16

Zakres w standardzie IEEE 754 69 Największa cecha i mantysa cecha 11111110 (BIAS=127) 11111111 (BIAS=127) wartość zdenormalizowana c = 254-127 c = 127 mantysa 11111111111111111111111 (U1) m = 01, 11111111111111111111111 (U1) m = 1+ (2 23-1) / 2 23 = (2 24-1) / 2 23 max (IEEE 754) = m 2 c max (IEEE 754) = (2 24-1) / 2 23 2 127 max (IEEE 754) = (2 24-1) 2 104 max (IEEE 754) = 3,4028234663852885981170418348452 10 38

Zakres w standardzie IEEE 754 70 W pojedynczej precyzji Z (IEEE 754) = - 3,4 10 38... 3,4 10 38 W podwójnej precyzji Z (IEEE 754) = - 1,8 10 308... 1,8 10 308

Precyzja liczb IEEE 754 71 Precyzję zapisu liczby zawsze wyznacza ilość dostępnych bitów mantysy. Jedną cyfrę dziesiętną koduje (statystycznie) log 2 (10) bitów mantysy W pojedynczej precyzji - 24 bity mantysy 24 / log 2 (10) = 24 / 3,32 = 7,2 cyfr W podwójnej precyzji - 53 bity mantysy 53 bity / log 2 (10) = 53 bity / 3,32 = 15,96 cyfr

Wartości specjalne IEEE 754 72 Zero ujemne lub dodatnie bit znaku może przyjmować dowolną wartość, wszystkie bity cechy i mantysy są równe zero przy porównaniach zero dodatnie i ujemne są traktowane jako równe sobie Nieskończoności ujemna lub dodatnia wszystkie bity wykładnika (cechy) są równe jeden, zaś wszystkie bity mantysy - zero nieskończoność występuje w przypadku wystąpienia nadmiaru (przepełnienia) oraz przy dzieleniu przez zero

73 Wartość zdenormalizowana IEEE 754 pojawia się, gdy występuje niedomiar (ang. underflow), ale wynik operacji można jeszcze zapisać denormalizując mantysę wszystkie bity cechy mają wartość 0 mantysa nie posiada domyślnej części całkowitej - jest liczbą ułamkową (0,xxxxxx). Wartość zdenormalizowana Pojedyncza precyzja m = 00,(pole mantysy) (U1) L = (-1) z *m*2-126 pole znaku pole cechy pole mantysy 0/1 0...0 bity ułamkowe mantysy Podwójna precyzja m = 00,(pole mantysy) (U1) L = (-1) z *m*2-1022

74 Najmniejsza wartość zmiennoprzecinkowa IEEE 7540 00000000000000000000000000000001 (IEEE 754) m = 0,00000000000000000000001 (U1) m = 2-23 min (IEEE 754) = 2-23 * 2-126 = 2-149 min (IEEE 754) = 1,4012984643248170709237295832899 * 10-45 min (IEEE 754) = ±1, 4 * 10-45

Liczby zmiennoprzecinkowe 75 IEEE 754

Kodowanie znaków 76 Dane wprowadzane za pomocą klawiatury, czyli znaki alfabetu, cyfry i znaki takie jak!,?, itd. nazywane są znakami alfanumerycznymi. Proces zamiany znaku wpisanego z klawiatury na jego reprezentację cyfrową nazywamy kodowaniem. Kod ASCII (ang. American Standard Code for Information Interchange) 7-bitowy kod przyporządkowujący liczby z zakresu 0 127: literom alfabetu angielskiego, cyfrom, znakom przestankowym i innym symbolom oraz poleceniom sterującym. litera a jest kodowana jako liczba 97, a znak spacji jest kodowany jako 32.

77 Kodowanie znaków

Kodowanie znaków 78 liczby z zakresu 128 255: służą do zapisu znaków tworzenia tabel lub ramek oraz do zapisu znaków narodowych. Strony kodowe to wersje kodu ASCII różniące się interpretacją symboli od 128 do 255..

Kodowanie znaków 79 Tekst zapisany w standardzie ISO 8859-2 Tekst zapisany w standardzie Windows 1250

Kodowanie znaków 80 256 znaków alfanumerycznych nie dawało możliwości zakodowania znaków diakrytycznych wielu języków np.: japońskiego, arabskiego, hebrajskiego itp. kod UNICODE o dłlugości16 bitów dla każdego znaku, a to daje już możliwość zakodowania 216, czyli 65536 znaków UNICODE jest jednoznaczny i uniwersalny, jest standardem dla XML, UNICODE mówi jakim znakom odpowiadają kody, a nie jak te znaki mają wyglądać Za sposób wypisywania znaków odpowiada kodowanie UTF-8, UTF-16 i UTF-32.

81 Z Windows do Unix...i z powrotem Znaki końca linii to \r (return) oraz \n (new line), które mogą pojawiać się pojedynczo lub razem. W zależności od systemu operacyjnego ich użycie jest inne : CR wykorzystuje tylko \r, carriage return (powrót karetki) (^M) LF wykorzystuje tylko \n, line feed (w wolnym tłumaczeniu: nowa linia) CRLF połączenie obu powyższych, wykorzystuje \r\n (Windows) Plik Unix owy czytany pod Windows ami brak przejścia do nowej linii