DSI technik informatyk ptc 1

background image

PODSTAWY TEORII

UKŁADÓW CYFROWYCH

Opracował: Andrzej

Nowak

background image

Jednostki

informacji

background image

Jednostki informacji

Informacja jest tworem czysto abstrakcyjnym.

Nie istnieje materialnie.

Nie można jej dotknąć, poczuć, zobaczyć.

Informację da się natomiast wyrażać za pomocą
symboli, znaków, kodu.

Człowiek najczęściej używa słów, pisma, gestów do
przekazywania informacji.

Ta sama informacja (idea) może przybierać formę
symboli, które, chociaż różne, oznaczają to samo
pojęcie.

Skoro do wyrażania informacji możemy używać
różnych symboli (słów), to dlaczego nie zastosować
do tego celu bitów?

background image

Jednostki informacji

Bit

jest symbolem, który może przyjmować dwie

różne postacie. Jeśli chcemy zapisać go na papierze,
to stosujemy symbole pomocnicze

0

i

1

.

Technicznie bit realizowany jest za pomocą dwóch
różnych sygnałów.

W technice cyfrowej określa się poziomy napięć,
które odpowiadają bezpośrednio dwóm postaciom
bitu:

0,4 ... 0,8 V - stan

0

(oznaczany również

L

- Low -

Niski)
2,0 ... 2,4 V - stan

1

(oznaczany również

H

- High -

Wysoki)

background image

Jednostki informacji

Układy elektroniczne komputera reagują na te
napięcia i w ten sposób przetwarzają bity.

Zamiast napięć mogą to być również prądy o
różnych natężeniach lub zwrotach, sygnały o dwóch
rozróżnialnych częstotliwościach oraz wiele innych
sposobów.

Poprzestańmy więc na stwierdzeniu, iż bit to sygnał
dwustanowy - jeden stan oznaczamy jako 0, a drugi
jako 1.

Każdy ze stanów bitu może przenosić jedną
wiadomość w identyczny sposób, jak np. słówko
"stół" przenosi wiadomość na temat rzeczy z
płaskim blatem i zwykle czterema nogami.

background image

Jednostki informacji

Tyle tylko, że słowa naszego języka mają ustalone od
stuleci znaczenia, bity natomiast możemy
przystosowywać do dowolnych wiadomości w miarę
potrzeb.

Jeden bit pozwoli w ten sposób przekazać
jedną z dwóch wiadomości.

Taśma dziurkowana.
Tak kiedyś zapisywano dane.
Każda dziurka odpowiadała
bitowi o stanie

1

.

Brak dziurki
oznaczał stan

0

.

background image

Jednostki informacji

Przykład

Pojedyncze bity używane są do komunikacji z
prostymi czujnikami, które reagują na określoną
sytuację - np. gaz w chronionym pomieszczeniu,
wzrost temperatury ponad wartość dopuszczalną,
osiągnięcie przez ciecz w naczyniu określonego
poziomu, otwarcie drzwi, przerwanie wiązki światła,
itp.

Czujnik ruchu.
W razie wykrycia ruchu
w okolicy przekazuje bit
o stanie

1

.

background image

Jednostki informacji

Bity możemy łączyć w grupy i traktować je wspólnie
jako symbol złożony.

Przy takim podejściu otrzymujemy nieograniczone
możliwości tworzenia słów binarnych i przypisywania
im znaczeń.

Grupa dwóch bitów oddaje nam do dyspozycji cztery
różne symbole, które powstają z kombinacji stanów
tworzących je bitów:

00

- symbol pierwszy

01

- symbol drugi

10

- symbol trzeci

11

- symbol czwarty

Każdemu symbolowi
możemy przypisać
informację o osobnym
zdarzeniu. Grupa dwóch
bitów może więc przekazać
informację o czterech
różnych zdarzeniach
.

background image

Jednostki informacji

Przykład

Załóżmy, iż chcemy zakodować binarnie obrazek
pokazany poniżej: Jest on złożony z różnokolorowych
punktów, które nazywamy pikselami (z języka ang.
picture element - element obrazu, punkt).

background image

Jednostki informacji

Od razu zauważamy, że punkty są tylko w czterech
kolorach. Układamy tablicę kodową kolorów, w której
każdemu kolorowi punktu przyporządkujemy jeden
symbol dwubitowy:

- 00

- 01

- 10

- 11

Powiązaliśmy w ten sposób informację z
reprezentującymi ją symbolami. Teraz wystarczy już
tylko każdy piksel zastąpić symbolem dwubitowym.
W tej postaci obrazek może być przechowywany w
pamięci komputera, przesyłany przez sieci
teleinformatyczne oraz przetwarzany.

background image

Jednostki informacji

background image

Jednostki informacji

Zwróćmy uwagę na małą czytelność dla ludzi
informacji zapisanej w systemie binarnym.

Szczególnie, jeśli wszystkie bity zapiszemy w jednym
ciągu:

00000000000000000000111111110000001111111111000000001111111111000000001111000000000000001000000001010

10101010101

background image

Systemy

liczbowe

background image

Systemy liczbowe

Systemy liczbowe

to sposoby zapisywania

i nazywania liczb.

Rozróżnia się systemy liczbowe

pozycyjne

i

niepozycyjne

(addytywne). 

W systemach liczbowych pozycyjnych liczbę

przedstawia się jako ciąg cyfr. Wartość jej jest
zależna od położenia (pozycji) cyfry w liczbie.

Do  systemów pozycyjnych zaliczamy m.in.:

dziesiątkowy, dwójkowy, ósemkowy,

szesnastkowy

Do addytywnych systemów liczbowych zaliczamy

m.in.: rzymski, hieroglificzny, alfabetyczny,
gdzie wartość liczby jest sumą wartości jej
znaków cyfrowych.

background image

Definicja liczby

Liczba

– pojęcie abstrakcyjne, jedno z najczęściej

używanych w matematyce.

Określenie „liczba” bez żadnego przymiotnika jest

nieścisłe, gdyż matematycy nie definiują „liczb”,
lecz „liczby naturalne”, „liczby całkowite”, itp.

Poszczególne rodzaje liczb są definiowane za

pomocą aksjomatów lub konstruowane z bardziej
podstawowych pojęć, takich jak zbiór, czy typy
liczb prostsze od konstruowanego.

Pierwotnie liczby służyły do porównywania wielkości

zbiorów przedmiotów (liczby naturalne), później
także wielkości ciągłych (miary i wagi), obecnie
w matematyce są rozważane jako twory
abstrakcyjne, w oderwaniu od ewentualnych
fizycznych zastosowań.

background image

System pozycyjny – wzór ogólny

Ogólnie oznaczając przez

c

n

- cyfrę systemu pozycyjnego i

n

pozycję

cyfry

zaś przez:

p

- podstawę systemu,

wartość reprezentowaną przez symbol liczby

zapisujemy jako sumę iloczynów postaci:

c

n

*

p

n

+ . . . + c

2

*

p

2

+ c

1

*

p

1

+

c

0

*

p

0

background image

System

dziesiątkowy

(

decymalny

)

background image

System dziesiątkowy

System dziesiątkowy

: 0, 1, 2, 3, 4, 5, 6, 7,

8, 9

- to wszystkim znane symbole cyfr arabskiego

dziesiątkowego, pozycyjnego systemu liczenia.

Każdemu z tych symboli przyporządkowana jest

pewna wartość.

Z tych prostych symboli tworzymy symbole

bardziej złożone wpisując cyfry na tzw. pozycje,
w uszeregowaniu od prawej do lewej.

I tak najbardziej skrajna prawa pozycja, to pozycja

zerowa (pozycja jedności), dalej pozycja
pierwsza (pozycja dziesiątek), dalej pozycja
druga (pozycja setek), ... itd.

background image

System dziesiątkowy

Zgodnie z przedstawioną zasadą, każdemu

prostemu czy złożonemu symbolowi układu
można przyporządkować wartość, zwaną liczbą. 

Liczba to nie to samo co cyfra.

Cyfry to znaki graficzne służące do opisu liczb.

background image

System dziesiątkowy

Symb

ol

Wartość w systemie Liczba

7

7 *10

0

siedem

56

5 * 10

1

+ 6 * 10

0

pięćdziesiąt
sześć

342

3 * 10

2

+ 4 * 10

1

+2 *

10

0

trzysta
czterdzieści dwa

background image

Konwersja liczb

Konwersja na dziesiątkowy:

(4013)

5

= 4 * 5

3

+ 0 * 5

2

+ 1 * 5

1

+ 3 * 5

0

= 500 + 5

+ 3 = (508)

10

Konwersja z dziesiątkowego

background image

System dwójkowy

(

binarny

)

background image

System dwójkowy (binarny)

System dwójkowy

- zrewolucjonizował cały

świat techniki, dając podstawę rozwoju wiodącej
obecnie dziedzinie wiedzy jaką jest informatyka.

Cyframi tego systemu są: 0 i 1.

Symbolizują one dwa stany tzw.

0 -

stan niski

– (brak działania/brak

sygnału)

1-

stan wysoki

– (działanie

układu/sygnał)

Podstawą systemu jest 2.

Stąd też i nazwa układ dwójkowy.

background image

Konwersja liczb

Ponieważ jest to również system pozycyjny, to
możemy w znany już sposób dokonywać konwersji
liczby z systemu dziesiątkowego na dwójkowy, np.

( 87)

10

= 87 : 2 = 43 1 =

(1010111)

2

43 : 2 = 21 1
21 : 2 = 10 1
10 : 2 = 5 0
5 : 2 = 2 1
2 : 2 = 1 0
1 : 2 = 0 1

background image

Konwersja liczb

Konwersja z systemu dwójkowego na dziesiątkowy:

(11011101)

2

= 1 * 2

7

+ 1 * 2

6

+ 0 * 2

5

+ 1 * 2

4

+ 1 * 2

3

+ 1 * 2

2

+ 0 * 2

1

+ 1 * 2

0

=

                        =  128 + 64 + 16 + 8 + 4 + 1 =
(221)

10

background image

System

szesnastkowy

(

heksadecymalny

)

background image

System szesnastkowy

Nawet niezbyt duża co do wartości liczba z systemu

dziesiątkowego zamieniona na postać dwójkową
(binarną) jest długim ciągiem jedynek i zer, a
ponowne przeliczenie jej na wartość w systemie
dziesiątkowym procesem żmudnym
i długotrwałym.

Między innymi dla uproszczenia zapisu i szybkiego

przeliczenia wartości wprowadzono system
pozycyjny, którego podstawą jest 2

4

, czyli 16 i

nazwano systemem szesnastkowym
(heksadecymalnym).

Cyframi tego systemu są:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C,

D, E, F

background image

Zależność między liczbami

Cyfry systemu

szesnastkowego

Liczby systemu

dziesiątkowego

Liczby systemu

dwójkowego

0

0

0000

1

1

0001

2

2

0010

3

3

0011

4

4

0100

5

5

0101

6

6

0110

7

7

0111

8

8

1000

9

9

1001

A

10

1010

B

11

1011

C

12

1100

D

13

1101

E

14

1110

F

15

1111

background image

Konwersje liczb na system
binarny

Każdej cyfrze systemu szesnastkowego odpowiada

cztero-pozycyjna liczba systemu dwójkowego.

Zamiana postaci liczby z systemu dwójkowego na

liczbę systemu szesnastkowego polega na
przypisaniu każdemu kolejnemu cztero-
pozycyjnemu pakietowi układów zero-
jedynkowych odpowiedniej cyfry układu
szesnastkowego, np.

(1011|0011|1010)

2

= (B3A)

16

Jeżeli w zapisie liczby dwójkowej ostatni /pakiet/

(z lewej) ma mniej niż cztery pozycje zero-
jedynkowe, to uzupełniamy brakujące pozycje
zerami, np.

(

11

|1011|1110)

2

= (

00

11|1011|1110)

2

=

(3BE)

16

background image

Konwersje liczb na system
decymalny

Przeliczenie liczby z systemu szesnastkowego na

wartość liczby w systemie dziesiątkowym
odbywa się według znanego wzoru  , np.

(3BE)

16

= 3 * 16

2

+ 11 * 16

1

+ 14 *

16

0

= 768 + 176 + 14 = (958)

10

background image

Dwójkowe liczby

stałoprzecinkowe

background image

Dwójkowe liczby
stałoprzecinkowe

System stałopozycyjny zapisu liczb jest
rozszerzeniem zapisu liczb naturalnych w stronę
wartości ułamkowych.

W systemie dziesiętnym za cyfrą jednostek
umieszcza się przecinek, a kolejne wagi pozycji są
teraz ujemnymi potęgami podstawy:

253,763 = 2 x 10

2

+ 5 x 10

1

+ 3 x 10

0

+ 7 x 10

-1

+ 6 x 10

-2

+ 3 x 10

-3

Zasada ta obowiązuje również w innych
systemach pozycyjnych.

Dla przykładu obliczmy wartość stałopozycyjnej
liczby piątkowej: 432,321

(5)

background image

Dwójkowe liczby
stałoprzecinkowe

432,321

(5)

= 4 x 5

2

+ 3 x 5

1

+ 2 x 5

0

+ 3 x 5

-1

+ 2 x 5

-2

+ 1 x

5

-3

432,321

(5)

= 4 x 25 + 3 x 5 + 2 x 1 + 3 x

1

/

5

+ 2 x

1

/

25

+ 1 x

1

/

125

432,321

(5)

= 100 + 15 + 2 +

3

/

5

+

2

/

25

+

1

/

125

432,321

(5)

= 117

86

/

125

432,321

(5)

= 117,688

W dowolnym systemie pozycyjnym o podstawie p
wartość liczby stałoprzecinkowej obliczamy wg wzoru:

c

n-1

...c

0

,c

-1

c

-2

...c

-m

= c

n-1

p

n-1

+ ... + c

0

p

0

+ c

-1

p

-1

+ c

-2

p

-2

+ ... +c

-m

p

-m

gdzie n - liczba cyfr przed przecinkiem, m - liczba cyfr
po przecinku

background image

Dwójkowe liczby
stałoprzecinkowe

Obliczymy wartość dwójkowej liczby
stałoprzecinkowej 1101,1011

(2)

1101,1011

(2)

= 1 x 2

3

+ 1 x 2

2

+ 0 x 2

1

+ 1 x 2

0

+ 1 x

2

-1

+ 0 x 2

-2

+ 1 x 2

-3

+ 1 x 2

-4

1101,1011

(2)

= 1 x 8 + 1 x 4 + 0 x 1 + 1 x 1 + 1 x

1

/

2

+ 0 x

1

/

4

+ 1 x

1

/

8

+ 1 x

1

/

16

1101,1011

(2)

= 8 + 4 + 1 +

1

/

2

+

1

/

8

+

1

/

16

1101,1011

(2)

= 13 +

10

/

16

1101,1011

(2)

= 13,625

background image

Liczby stałoprzecinkowe -
zadania

Zadanie 1

Oblicz wartość następujących liczb w systemie
dziesiętnym:

1234

(5)

, 3456

(7)

, 5678

(9)

110011

(2)

, 1110111

(2)

, 11001110011

(2)

1100111,011101

(2)

background image

Operacje

arytmetyczne

background image

Dodawanie

dwójkowe

background image

Dodawanie dwójkowe

Tabliczka dodawania
binarnego

0

+

0

=

0

0

+

1

=

1

1

+

0

=

1

1

+

1

=

0

i

1

dalej

Ostatni wynik należy rozumieć następująco: 1 + 1

daje 0 w bieżącej kolumnie i przeniesienie (ang.
carry) jedynki do następnej kolumny.

Przeniesienie dodawane jest do cyfry w następnej

kolumnie - zupełnie tak samo postępujemy w
systemie dziesiętnym, gdy wynik sumowania cyfr
przekracza dziewięć.

background image

Dodawanie dwójkowe

1101 13

+ 0010 +2

1111 15

0101 5

+ 0111 +7

1100 12

1001 9

+ 0011

+

3

1100 12

Jeśli liczby binarne są
zapisywane ze stałym
formatem (np. 8 bitów), to
może się zdarzyć, iż wynik
dodawania nie zmieści się w
dozwolonym zakresie liczb.
Sytuacja taka nazywa się

nadmiarem

(ang.

overflow

).

1010 10

+ 0110

+

6

1

0000

16

background image

Dodawanie dwójkowe

Wynik dodawania jest liczbą 5 bitową i nie mieści

się w 4 bitach.

Jeśli ograniczymy go do 4 bitów, to otrzymamy

wartość 0. Wystąpił nadmiar.

Wynik został obcięty do reszty z dzielenia przez

16.

Zapamiętaj:

Nadmiar jest przekroczeniem górnej granicy zakresu
liczb. Dla liczb naturalnych mamy do czynienia z
nadmiarem, gdy pojawi się przeniesienie poza
najstarszą pozycję liczby.

background image

Dodawanie dwójkowe
stałoprzecinkowe

W identyczny sposób dodajemy liczby

stałoprzecinkowe. Należy tylko pamiętać o
ustawieniu przecinków w jednej kolumnie i
dopisaniu w razie konieczności zer na początku
części całkowitych i na końcu części
ułamkowych:

0011,011 3,375

+ 0111,110 + 7,750

1011,001


11,125

background image

Odejmowanie

dwójkowe

background image

Odejmowanie dwójkowe

Tabliczka odejmowania
binarnego

0

-

0

=

0

1

-

0

=

1

1

-

1

=

0

0

-

1

=

1

i pożyczka

Ostatni zapis należy rozumieć jako: 0 - 1 daje w

bieżącej kolumnie 1 i pożyczkę (ang. borrow) do
następnej kolumny.

Pożyczka jest odejmowana od cyfr w następnej

kolumnie.

background image

Odejmowanie dwójkowe

1111 15

- 0111 -7

1000 8

1011

11

- 0101 -5

0110 6

1101 13

+ 0011 +3

1010 10

0011 3

- 0100

-4

...11

11

11

-1

Przy odejmowaniu wynik
może być liczbą ujemną.
Ponieważ omówione systemy
zapisu liczb binarnych nie
uwzględniają jeszcze liczb
ujemnych, to w takim
przypadku wystąpi sytuacja
zwana

niedomiarem

(ang.

underflow

).

background image

Odejmowanie dwójkowe

Zapamiętaj:

Niedomiar jest przekroczeniem dolnej granicy
zakresu liczb. Dla liczb naturalnych mamy do
czynienia z niedomiarem, gdy pojawi się pożyczka
poza najstarszą pozycję liczby.

Liczba -1 leży poza zakresem liczb dla kodu 4
bitowego. Dlatego nie może w tym kodzie być
przedstawiona prawidłowo i otrzymujemy wynik
równy 15.

Wiodące jedynki powstają w tym przypadku w
nieskończoność, co zostało zaznaczone trzema
kropeczkami na początku wyniku odejmowania.

background image

Mnożenie

dwójkowe

background image

Mnożenie dwójkowe

Tabliczka mnożenia
binarnego

0

x

0

=

0

1

x

0

=

0

0

x

1

=

0

1

x

1

=

1

Mnożenie binarne wykonujemy identycznie jak w

systemie dziesiętnym - przemnażamy mnożną
przez każdą cyfrę mnożnika zapisując wyniki tego
mnożenia odpowiednio przesunięte.

Następnie wykonujemy dodawanie zgodnie z

opisanym wcześniej schematem:

background image

Mnożenie dwójkowe

0011

3

x    0101

x 5

0011


0000

...

+ 0011

001111

15

background image

Mnożenie dwójkowe

W systemie dwójkowym wynik mnożenia jest

równy 1 tylko wtedy, gdy obie mnożone cyfry
mają wartość 1.

W każdym innym przypadku otrzymujemy wartość

0.

Pozwala to znacznie uprościć schemat mnożenia.

Mnożną umieszczamy tylko w tych kolumnach, w

których w mnożniku występują cyfry 1.

Pozostałe kolumny pomijamy:

background image

Mnożenie dwójkowe

1011

11

x    1101 x 13

1011

1011

33

+ 1011

+
11

10001111

143

Uwagi na temat nadmiaru odnoszą się również do
mnożenia liczb binarnych.

background image

Mnożenie dwójkowe

Mnożenie liczb
stałopozycyjnych
wykonujemy w
identyczny sposób,
lecz musimy
pamiętać, aby przy
wyniku oddzielić
odpowiednią ilość
cyfr ułamkowych
przecinkiem - ilość ta
jest sumą liczby
miejsc po przecinku
mnożnej i mnożnika -
tak samo jak w
systemie
dziesiętnym.

10,1

2,5

x      11,01

x

3,25

101

125

101


50

+ 101

+   75

1000001

1000,001

8125

8,125

background image

Dzielenie

dwójkowe

background image

Dzielenie dwójkowe

Dzielenie binarne jest najbardziej

skomplikowaną operacją arytmetyczną z
dotychczas opisywanych
.

Wymyślono wiele algorytmów efektywnego

dzielenia, ale dla potrzeb tego opracowania
wystarczy znany wam algorytm szkolny, który
polega na cyklicznym odejmowaniu
odpowiednio przesuniętego dzielnika od
dzielnej.

W systemie dwójkowym jest to szczególnie proste,

ponieważ dzielnika nie musimy mnożyć.

Zadanie

Podzielimy liczbę

1110

(2)

przez

11

(2)

(14 : 3).

background image

Dzielenie dwójkowe

1.

Przesuwamy w lewo dzielnik, aż zrówna się jego
najstarszy, niezerowy bit z najstarszym,
niezerowym bitem dzielnej.

Nad dzielną rysujemy kreseczkę:

1110 - dzielna

11 - przesunięty

dzielnik

background image

Dzielenie dwójkowe

2.

Jeśli dzielnik da się odjąć od dzielnej bez
niedomiaru, to nad kreską w kolumnie
najmłodszego bitu dzielnika wpisujemy 1 i
wykonujemy odejmowanie:

1

1110

- dzielna

11

- przesunięty dzielnik


0010

- różnica dzielnej i przesuniętego
dzielnika

background image

Dzielenie dwójkowe

3.

Dzielnik przesuwamy o jeden bit w prawo i
próbujemy tego samego z otrzymaną różnicą.

Jeśli odejmowanie jest możliwe, to nad kreską w
następnej kolumnie dopisujemy 1, odejmujemy
dzielnik od różnicy, przesuwamy go o 1 bit w
prawo i kontynuujemy.

Jeśli odejmowanie nie jest możliwe, to dopisujemy
nad kreską 0, przesuwamy dzielnik o 1 bit w
prawo i kontynuujemy

background image

Dzielenie dwójkowe

100

-

wynik dzielenia

1110

- dzielna

- 11

- dzielnik

0010

- dzielna po odejmowaniu

przesuniętego dzielnika


11

- dzielnika nie można odjąć

0010

- dzielna

11

- dzielnika nie można odjąć,

koniec

0010

- reszta z dzielenia

background image

Dzielenie dwójkowe

4.

Operacje te wykonujemy dotąd, aż dzielnik
osiągnie swoją pierwotną wartość.

Pozostała dzielna jest resztą z dzielenia

W naszym przykładzie otrzymaliśmy wynik 100

(2)

i

resztę 10

(2)

.

Jest to wynik poprawny, gdyż 3 mieści się w 14
cztery razy i pozostaje reszta 2.

Zadanie

podzielmy liczbę

110101101

(2)

przez

111

(2)

(429

przez 7)

background image

Dzielenie dwójkowe

0111101

- wynik dzielenia

110101101 : 111

111

- nie da się odjąć, nad kreską 0

110101101

111

- da się odjąć, nad kreską 1

11001101

111

- da się odjąć, nad kreską 1

1011101

111

- da się odjąć, nad kreską 1

100101

111

- da się odjąć, nad kreską 1

1001

111

- nie da się odjąć, nad kreską 0

1001

111

- da się odjąć, nad kreską 1,

koniec

10 - reszta z dzielenia

background image

Dzielenie dwójkowe

Odpowiedź:

110101101

(2)

:

111

(2)

=

111101

(2)

- reszta

10

(2)

(429 : 7 = 61 - reszta 2).

background image

Zadania

background image

Operacje arytmetyczne -
zadania

Zadanie 1

Dodaj dwie liczby ósemkowe 743

(8)

i 212

(8)

.

Zadanie 2

Wykonaj następujące dodawania binarne:

11010011101

+     

10101111

11001111010

+

11111100010

111000111

+

110011001

background image

Operacje arytmetyczne -
zadania

Zadanie 3

Wykonaj odejmowania binarne

1110011111

1

-     

10101100

1101111101

0

-      

1100111

11111011

1

-      

11001

Zadanie 4

Wykonaj mnożenie binarne

111100

x    1011

11010

x   1011

11101

x 11001

background image

Operacje arytmetyczne -
zadania

Zadanie 5

Wykonaj dzielenie binarne

11010011101 :

1110

  

11011111011 : 110

  

111010111 : 101

background image

Liczby ujemne

kod-znak-moduł

background image

Wartość liczb w kodzie Z-M

System zapisu liczb ze znakiem znany pod nazwą
znak-moduł (zapis Z-M) pochodzi w prostej linii od
naszego własnego sposobu zapisu liczb
ujemnych.

Znak kodowany jest stanem najstarszego bitu:

bit znaku =

0

- liczba

dodatnia

bit znaku =

1

- liczba ujemna

Reszta bitów przechowuje moduł, czyli wartość
bezwzględną liczby zakodowaną w naturalnym
kodzie binarnym (stosuje się również system
stałoprzecinkowy Z-M).

background image

kod-znak-moduł

Wartość liczby obliczamy wg następującego
wzoru:

bit znaku -najstarszy bit zapisu liczby

W

M

-wartość modułu, czyli pozostałych bitów

traktowanych jako liczba w naturalnym kodzie
binarnym (lub w kodzie stałoprzecinkowym).

Wyrażenie (1 - 2 x bit znaku)

przyjmuje wartość

1

dla bitu znaku =

0

oraz

-1

dla bitu znaku =

1

.

W

Z-M

= (1 - 2 x bit znaku) x

W

M

background image

kod-znak-moduł

Wzór ten można również zapisać w postaci
potęgowej:

W

Z-M

= (-1)

bit znaku

x W

M

background image

kod-znak-moduł

Załóżmy, że operujemy 4 bitowymi liczbami w
kodzie Z-M.

Liczba

(0 101)

(ZM)

ma wartość:

(0 101)

(ZM)

= (1 - 2 x 0) x (1 x 2

2

+ 0 x 2

1

+ 1

x 2

0

)

(0 101)

(ZM)

= 1 x (1 x 4 + 1 x 1)

(0 101)

(ZM)

= 1 x (4 + 1)

(0 101)

(ZM)

= 1 x 5

(0 101)

(ZM)

=

5

background image

kod-znak-moduł

Natomiast liczba

(1 101)

(ZM)

ma wartość dziesiętną:

(1101)

(ZM)

= (1 - 2 x 1) x (1 x 2

2

+ 0 x 2

1

+ 1

x 2

0

)

(1101)

(ZM)

= -1 x (1 x 4 + 1 x 1)

(1101)

(ZM)

= -1 x (4 + 1)

(1101)

(ZM)

= -1 x 5

(1101)

(ZM)

=

-5

Czyli jest liczbą przeciwną do poprzedniej.

background image

Kod

U2

background image

Kod U2

System zapisu liczb ze znakiem opisany w
poprzednim rozdziale nie jest zbyt wygodny dla
obliczeń maszynowych.

Już przy tak prostych operacjach jak dodawanie i
odejmowanie musimy stosować dodatkową logikę
obsługi znaków, aby otrzymywać poprawne wyniki.

Dlatego w obliczeniach komputerowych bardziej
popularny jest inny system, zwany systemem
uzupełnień do dwóch
(w skrócie

U2

) lub

uzupełnień do podstawy (w literaturze angielskiej
nosi on nazwę Two's Complement Numbering
System).

background image

Kod U2

Idea systemu U2 nie jest nowa - wymyślił ją już
Blaise Pascal, znany francuski fizyk i matematyk,
który skonstruował w 1652 roku prostą maszynę
arytmetyczną zdolną dodawać liczby dziesiętne.

Aby umożliwić również odejmowanie liczb, Pascal
wprowadził tzw. uzupełnienie do podstawy 10.

Otrzymujemy je odejmując
daną liczbę od podstawy
podniesionej do potęgi
równej największej ilości
cyfr dodawanych liczb. Np.
dla liczb z zakresu od 0..99
będziemy odejmować od
100 - 10

2

, dla liczb z zakresu

od 0..999 od 1000 - 10

3

itd.

Pascalina - sumator
Pascala

background image

Kod U2

Chcemy wykonać odejmowanie: 56 - 27.

W tym celu obliczamy uzupełnienie do podstawy
10 liczby 27:

- 27 = 100 - 27 =

73

(U10)

Teraz wykonujemy dodawanie liczby 56 oraz
uzupełnienia 73

(U10)

:

56 +

73

(U10)

=

1

29

Odrzucamy najstarszą jedynkę i mamy wynik

29

.

Zgadza się? /Pascal też był z tego zadowolony./

background image

Kod U2

Na identycznej zasadzie utworzono system
uzupełnień do podstawy U2.

W systemie tym waga pozycji najstarszego bitu
jest ujemna. Jeśli bit na tej pozycji będzie miał
wartość 0, to otrzymamy liczbę dodatnią, której
wartość określają pozostałe bity.

Gdy bit znaku przyjmie wartość 1, to liczba będzie
ujemna. Wartość liczby obliczymy jako sumę wagi
pozycji najstarszego bitu (jest ujemna) oraz
pozostałej części liczby.

Wzór obliczeniowy jest następujący:

W

U2

= c

n-1

x (- p

n-1

) + c

n-2

x p

n-2

+ ... + c

1

x p

1

+ c

0

x p

0

background image

Kod U2

Obliczmy dla przykładu wartość liczb 4 bitowych w
kodzie U2:

0101

(U2)

=  0 x (- 2

3

) + 1 x 2

2

+ 0 x 2

1

+ 1 x

2

0

0101

(U2)

=  0 x (- 8) + 1 x 4 + 0 x 2 + 1 x 1

0101

(U2)

=  0 + 4 + 1

0101

(U2)

5

1

101

(U2)

=  1 x (- 2

3

) + 1 x 2

2

+ 0 x 2

1

+ 1 x

2

0

1

101

(U2)

=  1 x (- 8) + 1 x 4 + 0 x 2 + 1 x 1

1

101

(U2)

=  (- 8) + 4 + 1

1

101

(U2)

=  - 8 + 5

1

101

(U2)

- 3

background image

Kod U2

Zapamiętaj

Wartość liczby w kodzie U2 obliczamy bardzo
podobnie do wartości liczby w naturalnym kodzie
dwójkowym. Musimy tylko pamiętać, że waga
najstarszej pozycji (pozycji znakowej) jest ujemna.
Dla n bitowej liczby U2 możemy zapisać wzór:

W

U2

= c

n-1

x (- 2

n-1

) + wartość reszty liczby w

kodzie NBC

background image

Zakres liczb w

kodzie

U2

background image

Kod U2

Największą liczbę w kodzie U2 otrzymamy, gdy bit
znaku przyjmie wartość 0 (liczba dodatnia), a reszta
cyfr będzie składała się z samych jedynek.

Reszta cyfr tworzy największą liczbę n-1 bitową w
naturalnym kodzie binarnym, wobec tego:

Z

U2max

= 2

n-1

- 1

Najmniejszą liczbę w kodzie U2 otrzymamy dla bitu
znaku równego 1 (liczba ujemna) oraz pozostałych
bitów równych zero.

Z

U2min

= -2

n-1

background image

Kod U2

zakres n-bitowej liczby w kodzie U2

Z

U2

= <-2

n-1

, 2

n-1

- 1>

Przykład

Obliczmy zakres 4 bitowych liczb w kodzie U2:

Z

U2max

= 2

4-1

- 1 = 2

3

- 1 = 8 - 1 = 7

Z

U2min

= -2

4-1

= -2

3

= -8

Dla czterech bitów Z

U2

=

<-8

,

7>

.

background image

Obliczanie wartości

przeciwnej w kodzie

U2

background image

Kod U2

Wartość przeciwna ma tą samą wartość
bezwzględną, lecz znak przeciwny.

W kodzie U2 obliczamy ją następująco:

ZAPAMIĘTAJ

Aby znaleźć wartość przeciwną do danej w kodzie

U2, wykonaj następujące dwie operacje:

zmień wszystkie bity liczby na przeciwne
(możesz wykorzystać do tego celu operację
logiczną

NOT

).

do tak uzyskanej liczby dodaj 1

background image

Kod U2

Przykład

Oblicz wartość przeciwną do liczby  0011

(U2)

= 3:

Sprawdzenie

1101

(U2)

= 1 x (-2

3

) + 1 x 2

2

+ 0 x 2

1

+ 1 x 2

0

1101

(U2)

= 1 x (-8) + 1 x 4 + 0 x 2 + 1 x 1

1101

(U2)

= -8 + 4 + 1

1101

(U2)

=

-3

NOT 

0011
1100

+   0001

1101

background image

Znajdowanie

reprezentacji liczby

w kodzie

U2

background image

Kod U2

Mamy wartość dziesiętną

W

i chcemy zapisać ją w

n-bitowym kodzie U2.

Najpierw musimy sprawdzić, czy zakres liczb U2

obejmuje wartość

W

. Jeśli tak, to:

Dla

W

nieujemnego obliczamy liczbę dwójkową

o tej wartości, a następnie dopełniamy ją
zerami do formatu n-bitowego.

Dla

W

ujemnego obliczamy uzupełnienie do

podstawy 2 o wartości 2

n

+ W. Wynik kodujemy

binarnie i otrzymujemy liczbę ujemną w kodzie
U2.

background image

Kod U2

Przykład

Znaleźć zapis liczby 92 w 8 bitowym kodzie U2.

Liczba jest dodatnia, więc znajdujemy jej zapis
binarny:

92 : 2 = 46 i reszta c

0

= 0

46 : 2 = 23i reszta c

1

= 0

23 : 2 = 11i reszta c

2

= 1

11 : 2 = 5i reszta c

3

=

1

5 : 2 = 2i reszta c

4

= 1

2 : 2 = 1i reszta c

5

= 0

1 : 2 = 0i reszta c

6

= 1

92 =
01011100

(U2)

background image

Kod U2

Przykład

Znaleźć zapis liczby

-107

w 8 bitowym kodzie U2:

Liczba jest ujemna, więc
najpierw obliczamy jej
dopełnienie do
podstawy:

U = 2

n

+ W = 2

8

- 107 =

256 - 107 = 149

149 : 2 = 74 i reszta c

0

=

1

74 : 2 = 37 i reszta c

1

=

0

37 : 2 = 18 i reszta c

2

=

1

18 : 2 = 9 i reszta c

3

= 0

9 : 2 = 4 i reszta c

4

= 1

4 : 2 = 2 i reszta c

5

= 0

2 : 2 = 1 i reszta c

6

= 0

1 : 2 = 0 i reszta c

7

= 1

Wyrażamy 149
binarnie

-107 = 10010101

(U2)

background image

Arytmetyka liczb w

kodzie

U2

background image

Dodawanie i

odejmowanie

background image

Kod U2 - dodawanie i
odejmowanie

Zasady dodawania i odejmowania liczb w kodzie

U2 nie różnią się od zasad wykonywania tych
działań arytmetycznych w zwykłym systemie
binarnym, co jest niewątpliwą zaletą kodu U2.

5 + (-3)

2-(-3)

0101

0010

+   1101

-   1101

1

0010

1

0101

Wynik

2

Wynik

5

Otrzymaliśmy poprawne wyniki

operacji bez sprawdzania
znaków przetwarzanych
liczb. Jest to bardzo dużą
zaletą kodu U2, dzięki której
obliczenia są szybkie i
sprawne.

Zapamiętaj

W systemie U2 dodawanie i odejmowanie
wykonujemy wg poznanych zasad dla naturalnego
kodu dwójkowego. Przeniesienia i pożyczki poza bit
znaku ignorujemy.

background image

Mnożenie

background image

Kod U2 - mnożenie

Mnożenie liczb w kodzie U2 różni się nieco od

standardowego mnożenia liczb binarnych.

Przed wykonaniem tej operacji arytmetycznej

musimy rozszerzyć znakowo obie mnożone
liczby tak, aby ich długość (liczba bitów) wzrosła
dwukrotnie (jeśli są różnej długości, to
rozszerzamy znakowo względem dłuższej
liczby).

Rozszerzenie znakowe polega na powielaniu bitu

znaku na wszystkie dodane bity. Np.:

0111

(U2)

= 0000 0111

(U2)

-

rozszerzyliśmy znakowo liczbę 4

bitową do 8 bitowej

1011

(U2)

= 1111 1011

(U2)

-

to samo dla liczby ujemnej.

background image

Kod U2 - mnożenie

Rozszerzenie znakowe nie zmienia wartości liczby
w kodzie U2.

Po wykonaniu rozszerzenia znakowego liczby
mnożymy wg poznanych już zasad.

Dla przykładu pomnóżmy (-2) x 3:

-2 = 1110

(U2)

=

1111

1110

(U2)

3 = 0011

(U2)

=

0000

0011

(U2)

background image

Kod U2 - mnożenie

(-2) x 3

11111110

x   00000011

11111110

+  11111110

 

10

11111010

Wynik =

-6

Wynik mnożenia może być
liczbą o długości równej sumie
długości mnożonych liczb.

Dlatego bity wykraczające w
naszym przykładzie poza 8
bitów ignorujemy.

Pozostałe 8 bitów określa w
kodzie U2 liczbę -6.

background image

Dzielenie

background image

Kod U2 - dzielenie

Najprostszym rozwiązaniem jest zapamiętanie
znaków dzielonych liczb, zamiana ich na liczby
dodatnie, dokonanie dzielenia dla liczb
naturalnych, a następnie zmiana znaku wyniku,
jeśli znaki dzielnej i dzielnika różnią się.

Podzielmy 6 przez -3:

6 = 0110

(U2)

-3= 1101

(U2)

- zmieniamy na 3 =

0011

(U2)

dzielimy liczbę

0110

przez

0011

10

0110 :

0011

-

011

0000

0011

Otrzymaliśmy wynik 0010  (liczba
2).?

background image

Kod U2 - dzielenie

Ponieważ znaki dzielnej i dzielnika

są różne

,

zmieniamy znak wyniku na przeciwny:

NOT

  0010

1101

+   0001

1110

I ostatecznie otrzymujemy wynik

1110

(U2)

=

-2

.

Jeśli w trakcie dzielenia otrzymamy resztę, to musi
ona mieć ten sam znak, co dzielna.

background image

Kod U2 -

reguły znaków przy dzieleniu liczb

całkowitych

Reguły znaków przy dzieleniu liczb całkowitych

Dzielna

Dzielnik

Wynik

Reszta

plus

plus

plus

plus

plus

minus

minus

plus

minus

plus

minus

minus

minus

minus

plus

minus

background image

Nadmiar i niedomiar w

kodzie

U2

background image

Kod U2 - nadmiar i niedomiar

W trakcie wykonywania działań arytmetycznych

wynik operacji może przekroczyć dozwolony
zakres liczb zarówno powyżej górnej granicy
(nadmiar) jak i poniżej dolnej (niedomiar).

Cechą charakterystyczną nadmiaru/niedomiaru

jest zmiana znaku wyniku w sytuacji, gdy nie
powinna ona nastąpić.

Załóżmy, iż operujemy na 4 bitowych liczbach w

kodzie U2 i chcemy wykonać proste dodawanie:

0 111

7

+   0 001

+ 1

1 000

-8

background image

Kod U2 - nadmiar i niedomiar

Otrzymany wynik jest niepoprawny w tym kodzie.

Spowodowane to jest tym, iż liczba 8 będąca sumą

7 i 1 wykracza poza górny kres wartości 4
bitowego kodu U2 (równy 7) i nie można jej
poprawnie przedstawić - musielibyśmy
przeznaczyć na zapis liczby więcej bitów.

Podobną sytuację zastaniemy przy próbie dodania

dwóch liczb ujemnych, np. -6 i -3:

1 010

- 6

+   1 101 + - 3

10 111

7

Liczba -9 jest mniejsza od dolnego krańca 4 bitowych

liczb w kodzie U2 (równego -8) i z tego powodu nie
może być poprawnie przedstawiona w tym kodzie.

background image

Kod U2 - nadmiar i niedomiar

Zapamiętaj

Wystąpienie nadmiaru lub niedomiaru jest
wskazówką dla programisty, że źle dobrał typ
danych dla przetwarzanej informacji - liczby są
reprezentowane zbyt małą ilością bitów i nie można
poprawnie zapisywać wyniku operacji.

Najprostszym rozwiązaniem będzie zwiększenie
liczby bitów dla liczb w kodzie U2 (np. z 16 na 32).

background image

Kod U2

- reguły powstawania

nadmiaru/niedomiaru

Reguły powstawania nadmiaru/niedomiaru

Operacja

Pierwszy

argument

Drugi

argument

Wynik

DODAWANIE

plus

plus

minus

minus

minus

plus

ODEJMOWANIE

plus

minus

minus

minus

plus

plus

MNOŻENIE

DZIELENIE

plus

plus

minus

minus

minus

minus

plus

minus

plus

minus

plus

plus

background image

Zadania

background image

Kod U2 - zadania

Zadanie 1

Oblicz wartość liczby binarnej 1101 traktując ją
kolejno jako liczbę w naturalnym kodzie
dwójkowym, w kodzie Z-M oraz w kodzie
uzupełnień do podstawy.

Zadanie 2

Znajdź wartość przeciwną do podanych liczb w
kodzie U2:

01011101 ,  11111111  ,

00000000  ,  01111110  , 11110000

background image

Kod U2 - zadania

Zadanie 3

Znajdź zapis w 8 bitowym kodzie U2
następujących wartości dziesiętnych:

-100,  -48, 126

Zadanie 4

Oblicz wartość liczb stałoprzecinkowych w kodzie
U2:

1101,111

(U2)

   1,1

(U2)

  100,001

(U2)

background image

Kod

BCD

background image

Kod

BCD

System Dziesiętny Kodowany Binarnie

System binarny jest wygodny do prowadzenia
obliczeń maszynowych.

Jednakże istnieje duża liczba zastosowań
urządzeń obliczeniowych, gdzie występuje częsta
potrzeba konwersji dziesiętno-binarnych - np.
kalkulatory, kasy sklepowe, wagi, urządzenia
pomiarowe, liczniki itp.

Dla takich zadań opracowano kod BCD - Binary
Coded Decimal, czyli dziesiętny kodowany
binarnie.

Stanowi on połączenie zalet dwójkowego
kodowania z czytelnością liczb dziesiętnych.

background image

Kod

BCD

Wartość liczb w kodzie BCD

W systemie BCD każdą cyfrę dziesiętną liczby
kodujemy za pomocą 4 bitów tworzących
wartość tej cyfry w systemie dwójkowym.

Np. liczbę 2379 zakodujemy następująco:

2

001

0

3

001

1

7

011

1

9

100

1

W efekcie otrzymujemy kod BCD tej wartości:

2379

(10)

=

0010001101111001

(BCD)

background image

Kod

BCD

Mając liczbę w kodzie BCD rozdzielamy jej bity na
grupy 4 bitowe.

Każdą grupę traktujemy jak cyfrę dziesiętną.

Dlatego wartości uzyskanych cyfr przemnażamy
przez kolejne potęgi podstawy systemu
dziesiętnego, czyli 10.

Wyniki iloczynów sumujemy.

background image

Kod

BCD

01101000100100110110

(BCD)

= 0110 1000 1001 0011 0110

01101000100100110110

(BCD)

= 6 x 10

4

+ 8 x 10

3

+ 9 x 10

2

+ 3 x 10

1

+ 6 x 10

0

01101000100100110110

(BCD)

= 6 x 10000 + 8 x 1000 + 9 x 100 + 3 x

10 + 6 x 1
01101000100100110110

(BCD)

= 60000 + 8000 + 900 + 30 + 6

01101000100100110110

(BCD)

= 68936

Ponieważ cyfry dziesiętne kodowane są na 4 bitach,
liczby BCD zawsze posiadają długość będącą
wielokrotnością liczby 4.

Kod BCD nie jest kodem efektywnym. Np. jedno
bajtowa liczba BCD może pomieścić tylko dwie
cyfry dziesiętne.

Wykorzystane zatem zostaje jedynie 100 słów
kodowych (dla liczb od 0 do 99), podczas gdy 1 bajt
może przyjąć postać 256 różnych słówek kodowych
- 156 nie będzie wykorzystanych

.

To więcej niż połowa

.

background image

Kod

BCD

Przy liczbach 2 bajtowych stosunek ten jest
jeszcze gorszy - 10000 liczb z 65536 słów
kodowych.

Zatem łatwość konwersji na system dziesiętny
okupiona została efektywnością kodowania
informacji i dlatego system BCD stosowany jest
tylko tam, gdzie się to naprawdę opłaca (np. przy
obliczeniach, gdzie zależy nam na
zminimalizowaniu błędów zaokrągleń przy
konwersji dwójkowo-dziesiętnej).

background image

Kod

BCD

Cechą kodu BCD jest to, iż w systemie
szesnastkowym poszczególne cyfry dziesiętne
odpowiadają bezpośrednio cyfrom szesnastkowym
0...9.

Dzięki tej własności można w prosty sposób
wprowadzać wartości BCD jako liczby
szesnastkowe:

1672

(16)

= 0001011001110010

(2)

= 0001 0110 0111

0010

(BCD)

=

1672

(10)

Zapamiętaj

W systemie BCD każda cyfra dziesiętna wartości
liczby zajmuje 4 bity. Bity te przedstawiają dwójkową
wartość cyfry.

background image

Arytmetyka w systemie BCD

Ponieważ liczby w kodzie BCD nie są naturalnymi
liczbami dwójkowymi, zatem nie można na nich
wykonywać normalnych działań arytmetycznych.

15 + 35

24 -15

0001 0101

0010 0100

+   0011 0101

- 0001 0101

0100 1010

0000 1111

Wynik nie

BCD!

Wynik nie

BCD!

gr1

background image

Arytmetyka w systemie BCD

Po wykonaniu standardowej operacji nad liczbami

w kodzie BCD należy sprawdzić i w razie
potrzeby skorygować wynik.

Dla dodawania i odejmowania korekcja będzie

potrzebna wtedy, gdy dana grupa bitów
reprezentujących cyfrę dziesiętną ma wartość
większą od 9 (binarnie 1001).

W takiej sytuacji do grupy tej należy dodać (dla

odejmowania odjąć) wartość binarną 0110
(dziesiętnie 6).

background image

Arytmetyka w systemie BCD

Sprawdźmy ponownie (kolorem czerwonym
zaznaczono korekcję wyniku):

15 + 35

24 -15

0001 0101

0010 0100

+   0011 0101

- 0001 0101

0100

1010

0000

1111

+ 0000

0110

- 0000

0110

0101 0000

0000 1001

Wynik = 50

Wynik = 9

background image

Arytmetyka w systemie BCD

Korekcja musi również wystąpić, gdy w trakcie
dodawania wystąpiło przeniesienie (przy
odejmowaniu pożyczka) do sąsiedniej grupy bitów.

29 + 19

31 -18

0010 1001

0011 0001

+   0001 1001

- 0001 1000

010

0

0010

000

1

1001

+ 0000

0110

- 0000

0110

0100 1000

0001 0011

Wynik = 48

Wynik = 13

background image

Arytmetyka w systemie BCD

Zapamiętaj

W systemie BCD korekcja przy dodawaniu polega na

dodaniu (lub odjęciu przy odejmowaniu) do grupy
bitów reprezentujących cyfrę dziesiętną liczby
0110 (6). Korekcję wykonujemy, gdy po operacji
arytmetycznej:

grupa bitów nie przedstawia cyfry dziesiętnej

nastąpiło przeniesienie (pożyczka) do następnej
grupy bitów

background image

Kod

Gray’a

background image

Kod

Gray’a

Konstrukcja wyrazów kodu Gray'a

Istnieje wiele przykładów sytuacji, gdzie wymaga

się, aby kolejne wyrazy kodowe różniły się
między sobą wartością tylko jednego bitu
.

Jedną z nich są układy pomiarowe (np. kąta zgięcia

ramienia robota).

Załóżmy, że w takim przypadku zastosowano

zwykły kod binarny, dla uproszczenia 3 bitowy.

Za pomocą tego kodu przedstawiamy kolejne

wartości ugięcia ramienia w zakresie od 0 do
70° z dokładnością co 10°:

background image

Kod

Gray’a

Kod

Wychylenie

000

001

10°

010

20°

011

30°

100

40°

101

50°

110

60°

111

70°

background image

Kod

Gray’a

Kod binarny tworzony jest na podstawie odczytu

czujników np. krzywkowych, które przy
odpowiednim położeniu ramienia zwierają
zestyki przekaźników lub zamykają strumień
świetlny dla fotodiody.

Cechą charakterystyczną takich rozwiązań jest to,

że z uwagi na różne luzy w układzie krzywka -
zestyki następuje przełączanie bitów w różnych
punktach, przez co nie wszystkie bity zmieniają
się równocześnie.

Rozważmy przypadek, gdy ramię robota przesuwa

się z położenia 30° na 40°.

background image

Kod

Gray’a

W pierwszym przypadku kod wynosi 011.

Teraz na skutek nie jednoczesnych przełączeń
bitów mogą właściwie pojawić się wszystkie
dostępne słowa kodowe zanim ustali się wartość
100 dla 40°. Np.:

011 - 111 - 100

Pokazaliśmy możliwe przejście ze stanu 011 do
100.

Na początku mamy słowo kodowe 011, które
informuje o zajęciu przez ramię robota położenia
30°.

Komputer sterujący robotem włącza teraz silniki
obrotu ramienia i odczytuje stan czujników.

background image

Kod

Gray’a

Niestety, na skutek luzów pierwszy bit ustalił się na
1, ale pozostałe 2 nie przeszły jeszcze w stan 0.

Co może w takim przypadku "pomyśleć" komputer
sterujący  ramieniem?

Pomyśli, że ramię jest w położeniu krańcowym, tzn.
70° i zmieni obroty silnika, aby cofnąć je z
powrotem na 40°.

Kod zmieni się na 011, a więc znów będziemy w
położeniu wyjściowym.

Komputer zmieni kierunek obrotów,  odczyta kod
111 i zapętli się.

background image

Kod

Gray’a

Oczywiście w praktyce konstruktor robota na
pewno odpowiednio zabezpieczył by się przed taką
możliwością.

Jednakże problem istnieje, ponieważ dobraliśmy
zły kod.

Lepszym rozwiązaniem jest kod Gray'a, który ma
taką własność, że kolejne wyrazy różnią się
między sobą wartością tylko jednego bitu.

background image

Kod

Gray’a

Kod

Gray’a

Wychylen

ie

000

001

10°

010

20°

011

30°

100

40°

101

50°

110

60°

111

70°

Teraz poprzednio
opisany problem nie
wystąpi, ponieważ
przejście z kodu 011
dla

30°

na 100 dla

40°

zmienia stan tylko

pierwszego bitu.

Z tego powodu kod
Gray'a jest lepszy od
naturalnego kodu
binarnego w układach
pomiarowych, gdzie
należy zachować
ciągłość odczytów.

Gr
1

background image

Kod

Gray’a

Zapamiętaj

Aby otrzymać i-ty wyraz kodu Gray'a wykonujemy

następujące operacje:

1.

Zapisujemy numer wyrazu kodu Gray'a w
naturalnym kodzie dwójkowym na zadanej
liczbie bitów.

2.

Pod spodem wypisujemy ten sam numer
przesunięty w prawo o 1 bit. Najmniej znaczący
bit odrzucamy. Na początku dopisujemy bit o
wartości 0.

3.

Nad odpowiadającymi sobie bitami wykonujemy
operację logiczną XOR. Wynik jest wyrazem w
kodzie Gray'a.

background image

Liczby

zmiennoprzecink

owe

background image

Liczby zmiennoprzecinkowe

Zapis zmiennoprzecinkowy

W obliczeniach inżynierskich, matematycznych czy
naukowych operuje się wielkościami zarówno
bardzo dużymi, jak i bardzo małymi.

Zapis takich liczb w systemie binarnym byłby mało
efektywny z uwagi na wymaganą ilość bitów.

Dzisiaj zapewne można by się z tym pogodzić, ale
większość systemów liczbowych dla maszyn
cyfrowych opracowano w czasach, gdy pamięć
stanowiła poważny procent kosztu całej maszyny i
programiści dbali o jej efektywne wykorzystywanie.

background image

Liczby zmiennoprzecinkowe

Z kolei liczby o dużej ilości bitów wymagają więcej
czasu na przetworzenie lub sprzętu o większej
mocy obliczeniowej.

Wobec tego szukano sposobu przedstawiania liczb
o dużym zakresie przy pomocy niewielkiej liczby
bitów.

Rozwiązaniem okazał się zapis
zmiennoprzecinkowy.

background image

Liczby zmiennoprzecinkowe

Na pewno spotkaliście już dziesiętny zapis
zmiennoprzecinkowy.

Chętnie stosują go fizycy dla wielkości bardzo
dużych (lub bardzo małych).

Na przykład moglibyśmy zapisać, że rok świetlny
to 9454254955488000 [m].

Liczbę taką źle się czyta. Jeśli nie jest nam
potrzebna wielka dokładność, to możemy zapisać:

rok świetlny ≈ 9,45 x 10

15

[m]

background image

Liczby zmiennoprzecinkowe

Dużą liczbę zapisaliśmy przy pomocy trzech
mniejszych liczb:

Mantysy

- 9,45

Podstawy

- 10

Wykładnika

15

Ponieważ podstawa jest dla danego systemu stała
i znana, więc nie musimy jej zapamiętywać wraz z
liczbą. Wystarczy informacja o mantysie oraz
wykładniku. Niektóre kalkulatory naukowe w ten
właśnie sposób prezentują duże liczby:

 9,45 15

background image

Liczby zmiennoprzecinkowe

Sposób ten możemy prosto uogólnić na dowolny,
pozycyjny system liczenia.

Wzór obliczania wartości liczby
zmiennoprzecinkowej jest zawsze ten sam:

W

FP

= m x p

w

m

- mantysa zapisana w systemie o podstawie p

p

- podstawa danego systemu pozycyjnego

w

- wykładnik zapisany w systemie o podstawie

p.

background image

Liczby zmiennoprzecinkowe

Obliczmy dla przykładu wartość liczby
zmiennoprzecinkowej zapisanej w systemie
czwórkowym: (3,21 x 10

12

)

(4)

.

Przy obliczaniu tego typu wartości musimy
pamiętać, że wszystkie trzy elementy są zapisane
w systemie o podstawie p (równej 4).

m = 3,21

(4)

m = 3 x 4

0

+ 2 x 4

-1

+ 1 x 4

-2

m = 3 x 1 + 2 x

1

/

4

+ 1 x

1

/

16

m = 3 +

2

/

4

+

1

/

16

m = 3

9

/

16

background image

Liczby zmiennoprzecinkowe

p = 10

(4)

p = 1 x 4

1

+ 0 x 4

0

p = 1 x 4 + 0 x 1

p = 4

w = 12

(4)

w = 1 x 4

1

+ 2 x 4

0

w = 1 x 4 + 2 x 1
w = 4 + 2

w = 6

(3,21 x 10

12

)

(4)

=

3

9

/

16

x

4

6

= 14592

(10)

background image

Liczby zmiennoprzecinkowe

Zapamiętaj

Aby obliczyć wartość liczby zmiennoprzecinkowej
zapisanej w dowolnym systemie pozycyjnym o
podstawie

p

, oblicz dziesiętną wartość mantysy

m

oraz wykładnika

w

i podstaw wyniki do wzoru:

W

FP

= m x p

w

Uwaga:

Mantysa jest liczbą stałoprzecinkową ze znakiem,
która posiada ustaloną liczbę cyfr całkowitych oraz
ułamkowych. Wykładnik jest zawsze liczbą
całkowitą.

background image

Niejednoznaczność

zapisu

zmiennoprzecinkowego

background image

Liczby zmiennoprzecinkowe

Pierwszą, charakterystyczną cechą liczb
zmiennoprzecinkowych jest niejednoznaczność
zapisu wartości liczby.

9,45 x 10

15

=

94,5 x 10

14

=

0,945 x

10

16

Wszystkie trzy zapisy przedstawiają tą samą
wartość.

Wynika stąd, iż w zapisie zmiennoprzecinkowym
liczby można przedstawiać w różnych
kombinacjach mantys i wykładników.

Stąd nazwa - zmiennoprzecinkowe (ang. floating
point number).

background image

Operacje

logiczne

background image

UKŁADY

KOMBINACYJNE

background image

UKŁADY KOMBINACYJNE

Układami

kombinacyjnymi

nazywamy te elementy techniki
cyfrowej,

dla

których

dana

kombinacja

stanów

wejściowych

(argumentów funkcji) określa w
sposób jednoznaczny kombinację
sygnałów wyjściowych. Należą do
nich:

bramki

kodery i dekodery

multipleksery i demultipleksery

background image

Funktory logiczne (bramki).

Podstawowe bramki spełniają wszystkie podstawowe
funkcje algebry Boole’a oraz dodatkowe, ułatwiające
syntezę układów. Należą do nich:

A

Y

0

1

1

0

A

Y

BRAMKA NOT (NIE)

Tabela prawdy

background image

Funktory logiczne (bramki).

A

B

Y

0

0

0

0

1

0

1

0

0

1

1

1

BRAMKA AND (I)

Tabela prawdy

Y

A

B

W obwodzie tym tylko przy zwarciu obu kluczy A i B
(stan A=1 i B=1 na "wejściu") świeci się żarówka
oznaczająca stan F=1 "na wyjściu"

background image

Funktory logiczne (bramki).

Tablice stanów prawdy nie są ograniczone tylko do
dwóch zmiennych, tych zmiennych może być
więcej. Rozważmy pewien układ cyfrowy o trzech
wejściach A,B,C i wyjściu F. Tablica (stanów) prawdy
dla tego układu ma postać.

Nr
wiersz

a

A B C F

0

0 0

0 0

1

0 0

1 1

2

0 1

0 1

3

0 1

1 1

4

1 0

0 0

5

1 0

1 1

6

1 1

0 1

7

1 1

1 1

Każdej zmiennej wejściowej
A,B,C i wyjściowej F jest
przyporządkowana w tablicy
stanów osobna kolumna,
a każdemu stanowi układu
osobny wiersz.

background image

Liczba wierszy zależy od liczby zmiennych
wejściowych. Zgodnie z kombinatoryką przy n-
dwustanowych zmiennych wejściowych tablica
zawiera

wierszy;

w naszym przypadku wierszy.

Funktory logiczne (bramki).

Tablica stanów (prawdy) służy również do
stwierdzenia czy dane wyrażenie jest tautologią -
prawem logicznym, tzn. czy jest prawdziwe dla
dowolnych

wartości

(0,1)

zmiennych

występujących w tym wyrażeniu.

background image

Funktory logiczne (bramki).

Przykład

-

umieszczonego

w

tabeli

prawa

rozdzielczości iloczynu względem sumy, czyli: 

A*(B+C) = A*B+A*C  

A   B C B+C

 

A*(B+C)

 

A*B

A*C

 

A*B+A*C

 

0

0 0

0

0

0

0

0

0

0 1

1

0

0

0

0

0

1 0

1

0

0

0

0

0

1 1

1

0

0

0

0

1

0 0

0

0

0

0

0

1

0 1

1

1

0

1

1

1

1 0

1

1

1

0

1

1

1 1

1

1

1

1

1

background image

Funktory logiczne (bramki).

Y

B

A

BRAMKA OR (LUB)

Tabela prawdy

A

B

Y

0

0

0

0

1

1

1

0

1

1

1

1

background image

Funktory logiczne (bramki).

A

B

Y

0

0

1

0

1

1

1

0

1

1

1

0

BRAMKA NAND (NIE-I)

Tabela
prawdy

BRAMKA NOR (NIE-
LUB)

Tabela prawdy

A

B

Y

0

0

1

0

1

0

1

0

0

1

1

0

Y

B

A

Y

B

A

background image

Funktory logiczne (bramki).

A

B

Y

0

0

0

0

1

1

1

0

1

1

1

0

BRAMKA XOR (ALBO)

Tabela prawdy

Y

B

A

background image

Funktory logiczne (bramki).

Za pomocą odpowiednich połączeń bramek można

zrealizować każdą funkcję np.:

D

C

B

A

B

A

Y

Y=A*(#A+#B)+B*C+#D

A

B

C

D

na schematach negację argumentu można oznaczać #

#A

#B

#A+#B

A*(#A+#B)

B

C

B*C

#D

#D+B*C


Document Outline


Wyszukiwarka

Podobne podstrony:
techniki informacyjne
Program nauczania Technik Informatyk 312[01] 2004 06 04
PEDAGOGIKA[1], Studia, Edukacja Techniczno-Informatyczna, Pedagogika
Opis zawodu Technik informatyk, Opis-stanowiska-pracy-DOC
PRAKTYCZNY czerwiec 2007 zad.3, egzamin technik informatyk
c3 stal po ob ciep-chem, Politechnika Poznańska, Edukacja Techniczno Informatyczna, Semestr II, Mate
DOS komendy DOS-a-ściąga, szkoła, technik informatyki, INFORMATYKA-all, Ściąga z informatyki-2003
2008-probny-praktyka-teleinformatyk-wlasny, Technik Informatyk, materialy egzamin teoretyczny
SYSTEMY1, technik informatyk, soisk utk
egzamin praktyczny 2007 - co nalezało zrobic, technik informatyk, praktyczny
Egzamin Technik Informatyk Czerwiec 2011 (Test wer X)
2012 06 Technik informatyk arkusz zadaniaid 27644
Egzamin Technik Informatyk Styczeń 2011 (Test wer X)
Angielski zawodowy technik informatyk id 64487 (2)
ODPOWIEDZI Przykładowy egzamin teoretyczny technik informatyk 7
Spawalność, Politechnika Poznańska, Edukacja Techniczno Informatyczna, Semestr II, Materiałoznawstwo
Urządzenia do komunikacji bezprzewodowej(1), technik informatyk, soisk utk

więcej podobnych podstron