Kodowanie liczb całkowitych w systemach komputerowych

Podobne dokumenty
Naturalny kod binarny (NKB)

Arytmetyka binarna - wykład 6

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

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

Systemy zapisu liczb.

Stan wysoki (H) i stan niski (L)

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

Kodowanie informacji. Kody liczbowe

Pracownia Komputerowa wykład V

Technologie Informacyjne

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

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

Zapis liczb binarnych ze znakiem

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

Kod U2 Opracował: Andrzej Nowak

Teoretyczne Podstawy Informatyki

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

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

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

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

Cyfrowy zapis informacji

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

1.1. Pozycyjne systemy liczbowe

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

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

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

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

Architektura komputerów

ARCHITEKRURA KOMPUTERÓW Kodowanie liczb ze znakiem

Pracownia Komputerowa wykład IV

Cyfrowy zapis informacji. 5 grudnia 2013 Wojciech Kucewicz 2

SYSTEMY LICZBOWE 275,538 =

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

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

Technologie Informacyjne Wykład 4

SYSTEMY LICZBOWE. Zapis w systemie dziesiętnym

1259 (10) = 1 * * * * 100 = 1 * * * *1

Arytmetyka stałopozycyjna

Pracownia Komputerowa wyk ad V

Pracownia Komputerowa wyk ad IV

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

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

Pracownia Komputerowa wykład VI

Technika Cyfrowa i Mikroprocesorowa

Reprezentacja stałoprzecinkowa. Reprezentacja zmiennoprzecinkowa zapis zmiennoprzecinkowy liczby rzeczywistej

System Liczbowe. Szesnastkowy ( heksadecymalny)

DZIESIĘTNY SYSTEM LICZBOWY

Wielkość analogowa w danym przedziale swojej zmienności przyjmuje nieskończoną liczbę wartości.

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

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

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

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

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

PODSTAWY INFORMATYKI. Informatyka? - definicja

Podstawy Informatyki

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

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

Techniki multimedialne

Dr inż. Jan Chudzikiewicz Pokój 117/65 Tel Materiały:

Zestaw 3. - Zapis liczb binarnych ze znakiem 1

Arytmetyka liczb binarnych

Wykład I: Kodowanie liczb w systemach binarnych. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

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

Podstawy Informatyki

Adam Korzeniewski p Katedra Systemów Multimedialnych

Wprowadzenie do informatyki - ć wiczenia

Pracownia Komputerowa wyk ad VI

Architektura komputerów

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

Podstawy Automatyki. Wykład 9 - Podstawy matematyczne automatyki procesów dyskretnych. dr inż. Jakub Możaryn. Instytut Automatyki i Robotyki

Wstęp do informatyki- wykład 2

Znaki w tym systemie odpowiadają następującym liczbom: I=1, V=5, X=10, L=50, C=100, D=500, M=1000

ARYTMETYKA KOMPUTERA

Arytmetyka stało i zmiennoprzecinkowa

Pozycyjny system liczbowy

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

Technika Cyfrowa 1 wykład 1: kody. Dr inż. Jacek Mazurkiewicz Katedra Informatyki Technicznej

LICZBY ZMIENNOPRZECINKOWE

Adam Korzeniewski p Katedra Systemów Multimedialnych

Operacje arytmetyczne

Systemy liczbowe używane w technice komputerowej

Temat 7. Dekodery, enkodery

Metoda znak-moduł (ZM)

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

Katedra Elektrotechniki Teoretycznej i Informatyki. sem. II - wykłady M. Czyżak

Materiały laboratoryjne. Kodowanie i liczby. dr inż. Zbigniew Zakrzewski. Z.Z. Podstawy informatyki

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc

1. Operacje logiczne A B A OR B

DYDAKTYKA ZAGADNIENIA CYFROWE ZAGADNIENIA CYFROWE

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

Systemy liczbowe. Bibliografia: Urządzenia techniki komputerowej, K. Wojtuszkiewicz

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

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

Metody numeryczne II. Reprezentacja liczb

Układy arytmetyczne. Joanna Ledzińska III rok EiT AGH 2011

Wydział Mechaniczny. Instrukcja do zajęć laboratoryjnych

Architektura systemów komputerowych. Arytmetyka maszyn cyfrowych

LICZBY ZMIENNOPRZECINKOWE

L6.1 Systemy liczenia stosowane w informatyce

Transkrypt:

Kodowanie liczb całkowitych w systemach komputerowych

System pozycyjny Systemy addytywne znaczenie historyczne Systemy pozycyjne r podstawa systemu liczbowego (radix) A wartość liczby a - cyfra i pozycja cyfry np. A= i= 11,3125 dziesiętnie = 1101,0101 dwójkowo r i i a i

Reprezentacja części ułamkowej Liczby, które mają skończoną postać w jednym systemie, mogą mieć nieskończone rozwinięcie w innych systemach (!) np. 0,1 dziesiętnie = 0,0(0011) dwójkowo Jaki będzie efekt działania tego programu? Na czym polega błąd programisty? #include <stdio.h> int main() { double i; for(i=0; i!=1; i+=0.1) printf("%f\n",i); }

Podstawa systemu liczbowego Podstawa systemu r (radix) ma stałą wartość dla wszystkich pozycji cyfry (fixed-radix) dziesiętny, szesnastkowy, ósemkowy, dwójkowy może mieć różną wartość dla różnych pozycji (mixed-radix) czas: godzina, minuta, sekunda r = (24,60,60) kąt: stopnie, minuty, sekundy r = (360,60,60) factoradic r = (... 5!, 4!, 3!, 2!, 1!) = (... 120, 24, 6, 2, 1) 54321 factoradic = 719 dziesiętnie 5 5! + 4 4! + 3 3! + 2 2! + 1 1! = 719 primoradic r = (... 11, 7, 5, 3, 2, 1) 54321 primoradic = 69 dziesiętnie 5 7 + 4 5 + 3 3 + 2 2 + 1 1 = 69 nie musi być liczbą naturalną (liczby ujemne, wymierne, zespolone) 54321-10 = 462810 dziesiętnie

Cyfry systemu liczbowego System o podstawie r, który wykorzystuje standardowy zestaw cyfr [0..r-1] to system nieredundantny dwójkowy 0, 1 dziesiętny 0... 9 szesnastkowy 0... F System, który posiada więcej cyfr niż r jest systemem redundantnym dwójkowy 0,1,2 lub -1,0,1 dziesiętny 0... 9,,, W systemach redundantnych reprezentacja liczby nie jest unikalna dwójkowy [0,1,2]: 1000 = 8 dziesiętnie i 0120 = 8 dziesiętnie

Klasyfikacja (kryterium: redundancja) Systemy pozycyjne o stałej podstawie r (r liczba naturalna) i zestawie cyfr: [ α, β] Conventional Nonredundant α=0 α 1 Symmetric minimal GSD Nonredundant signed-digit α=β (even r) ρ=0 ρ 1 Minimal GSD r=2 Saved-carry Binary signed-digit (SC) (BSD) r=2 α β Asymmetric minimal GSD α=0 α=1(r 2) Binary saved-carry (BSC) Nonbinary SB Generalized signed-digit (GSD) ρ=1 ρ 2 Symmetric nonminimal GSD α=β redundancja ρ=α+β+1-r Nonminimal GSD α β Asymmetric nonminimal GSD Zastosowania w arytmetyce komputerowej BSD, radix=2, cyfry: -1, 0, 1 BSC, radix=2, cyfry: 0, 1, 2

Kodowanie liczb całkowitych W standardowym systemie liczbowym o podstawie r, za pomocą n-cyfrowej liczby: można reprezentować liczby z zakresu [0... r n -1] liczba różnych reprezentacji wynosi r n system dwójkowy: 8-bitów, zakres 0...255, różnych liczb 256 system piątkowy: 3-cyfry, zakres 0...124, różnych liczb 125 Ile cyfr potrzeba na zapis liczb w zakresie [0... max]? n=ceil [log r max 1 ]= floor [ log r max ] 1 np. do zapisania 50000 liczb w kodzie dwójkowym potrzeba: log 2 50000 = 15.61 (ceil) 16 cyfr (bitów) log 2 49999+1 = 16.61 (floor) 16 cyfr (bitów)

Wybór optymalnej podstawy Kryteria: możliwie krótka reprezentacja (małe n) i mało cyfr (małe r) wygodna implementacja fizyczna proste algorytmy arytmetyczne Jaki system liczbowy (o jakiej podstawie) będzie,,najlepszy" do kodowania liczb w zakresie [0...max]? Kryterium matematyczne (jedno z wielu): E(r) = r * n gdzie r podstawa systemu dla n-cyfrowej liczby Wymagany jest kompromis pomiędzy małymi wartościami r (łatwa implementacja) i n (efektywny zapis)

Wybór optymalnej podstawy (c.d.) Szukamy minimum funkcji E(r) = r * n dla r >1 ln max 1 E r =r n=r log r max 1 =r ln r de dr Optymalna, w sensie E(r), podstawa to 3, ale podstawa 2 jest niewiele gorsza i dużo bardzie praktyczna ze względu na realizację fizyczną E 2 E 10 =1.056, E 3 E 2 =1.5 =ln max 1 ln r 1 ln 2 r =0 r optimal =e=2.71 =ln max 1 r ln r

Naturalny kod binarny (NKB, NBC) Zakładamy, że pod pojęciem NKB będziemy rozumieli system stało-pozycyjny o podstawie 2 i cyfrach 0 i 1 n-bitową reprezentację liczb nieujemnych [0... max] a n 1 a n... a 1 a 0 = i=0 n 1 2 i a i 4-bity: zakres 0... 2 4-1 0... 15 (1 cyfra hex) 8-bitów: zakres 0... 2 8-1 0... 255 (2 cyfry hex) 16-bitów: zakres 0... 2 16-1 0... 65 535 32-bity: zakres 0... 2 32-1 0... 4 294 967 295 64-bity: zakres 0... 2 64-1 0... 18 446 744 073 709 551 615 NKB nie pozwala na zapis liczb ujemnych

Kody specjalne Kod Graya dwójkowy kod niepozycyjny że każde dwa kolejne słowa kodowe różnią się tylko stanem jednego bitu. kod cykliczny ostatni i pierwszy wyraz tego kodu także spełniają zasadę różnicy tylko na jednym bicie zastosowanie: unikanie stanów przejściowych w układach elektroniki cyfrowej (przetworniki analogowo-cyfrowych, czujniki położenia/obrotu, etc.) wartość Gray 0 0 0 0 1 0 0 1 2 0 1 1 3 0 1 0 4 1 1 0 5 1 1 1 6 1 0 1 7 1 0 0

Kody specjalne Kod BCD Binary-Coded Decimal kodowanie cyfr dziesiętnych za pomocą czterech bitów, w jednym bajcie można zapisać liczbę z zakresu 0...99 zastosowania: do sterowania wyświetlaczami cyfrowymi w urządzeniach elektronicznych do przechowywania i obliczeń bezpośrednio na liczbach dziesiętnych, bez konwersji do kodu dwójkowego. cyfra BCD 0 0 0 0 0 1 0 0 0 1 2 0 0 1 0 3 0 0 1 1 4 0 1 0 0 5 0 1 0 1 6 0 1 1 0 7 0 1 1 1 8 1 0 0 0 9 1 0 0 1 5127 DEC = 0101000100100111 BCD

Kodowanie liczb ujemnych całkowitych Mapowanie liczb ujemnych na zakres NKB Intuicyjna reprezentacja liczb ujemnych Proste operacje arytmetyczne (dodawanie i negacja) Kod znak-moduł: ZM, (ang. SM) Kod z przesunięciem (ang. Bias, Excess-N) Kod uzupełnieniowy: U2, U1, (ang. 1C, 2C)

Kod znak-moduł (ZM) Najstarsze i najprostsze rozwiązanie W kodzie dwójkowym: najbardziej znaczący bit liczby służy do kodowania znaku (1 ujemna, 0 dodatnia) reprezentowane są liczby z zakresu [ 2 n-1 +1, 2 n-1 1] Zalety: intuicyjna reprezentacja symetryczny zakres proste operacja negacji Wady: skomplikowane dodawanie!!! 49 DEC = 00110001 ZM 49 DEC = 10110001 ZM +0 DEC = 00000000 ZM 0 DEC = 10000000 ZM podwójna reprezentacja zera

Kod znak-moduł (ZM) N 1 0 +P mapowanie na NKB Inkrementacja 1101-5 1100-4 1011-3 0 +P 0 1 N 1110-6 1010-2 1111-7 1001-1 X 0000 +0 1000-0 X 0001 +1 + 0111 +7 0010 +2 0110 +6 0011 +3 0100 +4 0101 +5 reprezentowane liczby Inkrementacja

Kody z przesunięciem (Bias, Excess-N) Zakres [ N, +P] jest mapowany na [0, N+P] Polega na dodaniu przesunięcia (bias=n) do liczby Zalety: Wady: intuicyjna reprezentacja [ 4, +11 ] [ 0, 15 ], bias = 4 1 3 liniowe mapowanie łatwe operacje porównania dodawanie/odejmowanie wymaga korekcji wyniku mnożenie i dzielenie dość skomplikowane

n-bitowy kod Excess-2 n-1 W n-bitowym kodzie dwójkowym Excess-2 n-1 : reprezentowane są liczby z przedziału [ 2 n-1, 2 n-1 1] przesunięcie (bias) wynosi 2 n-1 (MSB = 1, pozostałe bity 0) najbardziej znaczący bit liczby powala poznać znak (0 ujemna, 1 dodatnia lub 0) przeciwnie do ZM dodanie lub odjęcie przesunięcia wymaga jedynie operacji na najbardziej znaczącym bicie liczby (korekta na MSB) negacja liczby polega na negacji wszystkich bitów i dodaniu jedynki do całości 16 DEC 16 DEC + bias = 16 DEC + 128 DEC = 10010000 excess-128-16 DEC -16 DEC + bias = -16 DEC + 128 DEC = 01110000 excess-128

n-bitowy kod Excess-2 n-1 N 1 0 +P mapowanie na NKB Inkrementacja 1100 +4 1101 +5 1011 +3 1110 +6 1010 +2 1111 +7 1001 +1 + 0000-8 1000 0 0001-7 0111-1 0010-6 0110-2 0011-5 0100-4 0101-3 reprezentowane liczby N 1 0 +P X Inkrementacja

Kody z przesunięciem arytmetyka Operacje dodawania i odejmowania wymagają korekcji wyniku: X = x + bias Y = y + bias X + Y x + bias + y + bias = x + y + 2*bias (X + Y) bias X Y x + bias y bias = x y + 0*bias (X Y) + bias Operacje ±bias to zmiana tylko bitu MSB Uwaga na przekroczenie zakresu!

Kody uzupełnieniowe Zakres [ N, +P] jest mapowany na [0, N+P] Reprezentacja liczb dodatnie jest bez zmian Postać liczb ujemnych oblicza się jako uzupełnienie do stałej uzupełniania M M = N+P+1 x = M x Zalety: Wady: [ 4, +11 ] [ 0, 15 ], M = 16 1 15 proste operacje arytmetyczne, identyczna jak w NKB!!! mało intuicyjna reprezentacja (?)

Kod uzupełnienia dwójkowego (U2) reprezentowane są liczby z przedziału [ 2 n-1, 2 n-1 1] stała uzupełnienia M wynosi 2 n (radix-complement) najbardziej znaczący bit liczby powala poznać znak (1 ujemna, 0 dodatnia) Negacja liczby: x = M x = 2 n x = (2 n 1) x + 1 = 11...1 BIN x + 1 = = negacja_bitowa(x) + 1 Arytmetyka modulo-m w kodzie dwójkowym: ignorowanie bitu przeniesienia (C Carry) z pozycji n-1 (drop carry-out)

Kod uzupełnienia dwójkowego (U2) Obliczanie postaci/wartości liczby ujemnej a) negacja_bitowa(x) + 1 b) ze wzoru definicyjnego x = M x c) ze wzoru pozycyjno-wagowego A U2 = 2 n 1 a n 1 i=0 n 2 2 i a i znak z wagą ujemną moduł w NKB

Kod uzupełnienia dwójkowego (U2) N 1 0 +P mapowanie na NKB Inkrementacja 1101-3 1100-4 1011-5 1110-2 1010-6 0 +P 1111-1 1001-7 0000 0 1000-8 X 0001 1 + 0111 7 0010 2 0110 6 0011 3 0100 4 0101 5 reprezentowane liczby N Inkrementacja 1

Kod uzupełnienia jedynkowego (U1) reprezentowane są liczby z przedziału [ 2 n-1 +1, 2 n-1 1] stała uzupełnienia M wynosi 2 n 1 (digit-complement) najbardziej znaczący bit liczby powala poznać znak (1 ujemna, 0 dodatnia) Dwie reprezentacje zera Negacja liczby: x = M x = 2 n 1 x = 11...1 BIN x = negacja_bitowa(x) Arytmetyka modulo-m w kodzie dwójkowym: dodawanie bitu przeniesienia (C Carry) z pozycji n-1 do wyniku działania (end-around carry)

Kod uzupełnienia jedynkowego (U1) N 1 0 +P mapowanie na NKB Inkrementacja 1101-2 1100-3 1011-4 1110-1 1010-5 0 +P 1111-0 1001-6 X 0000 0 1000-7 X 0001 1 + 0111 7 0010 2 0110 6 0011 3 0100 4 0101 5 reprezentowane liczby N 1 0 Inkrementacja