Reprezentacja danych w systemach komputerowych

advertisement
Języki i metodyka programowania
Reprezentacja danych
w systemach komputerowych
Języki i metodyka programowania
Reprezentacja danych w systemach komputerowych
Kod (łac. codex - spis), ciąg składników sygnału (kombinacji sygnałów
elementarnych, np. kropek i kresek, impulsów prądu, symboli) oraz reguła
ich przyporządkowania składnikom wiadomości (np. znakom pisma); w
niektórych zastosowaniach, gł. przy przesyłaniu informacji podlegających
utajnieniu, zw. szyfrem; kody są stosowane m.in. w telegrafii, w technice
cyfrowej; np. k. binarny, k. ASCII, k. sygnałowy.
●
Kodowanie (ang. Encoding) – proces przetwarzania danych źródłowych
do innej postaci.
●
Dekodowanie (ang. Decoding) – proces odtwarzania
danych.
●
zakodowanych
Kodek jest skrótem od "koder/dekoder", co oznacza urządzenie lub
program zdolny do przekształcania strumienia danych lub sygnału.
Kodeki mogą zmienić strumień danych w formę zakodowaną (często w
celu transmisji, składowania lub zaszyfrowania) lub odzyskać
(odkodować) strumień danych z formy zakodowanej, by umożliwić ich
odtwarzanie bądź obróbkę.
●
Języki i metodyka programowania
Reprezentacja danych w systemach komputerowych
Kodowanie znakowe polega na stworzeniu sekwencji par
znak – liczba naturalna w celu zapisania tak
zakodowanych danych w systemach komputerowych lub w
celu transmisji.
Języki i metodyka programowania
Reprezentacja danych w systemach komputerowych
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.
Przykładowo litera "a" jest kodowana liczbą 97, a polecenie "powrót karetki" –
liczbą 13.
Litery, cyfry oraz inne znaki drukowane tworzą zbiór znaków ASCII. Jest to 95
znaków o kodach 32-126. Pozostałe 33 kody (0-31 i 127) to tzw. kody sterujące
służące do sterowania urządzeniem odbierającym komunikat, np. drukarką czy
terminalem.
Kod ASCII został po raz pierwszy opublikowany w formie normy w 1967, a jego
ostatnia modyfikacja była w 1986.
Ponieważ kod ASCII jest 7-bitowy, a większość komputerów operuje na 8-bitowych
bajtach, dodatkowy bit można wykorzystać na powiększenie zbioru kodowanych
znaków. Powstało wiele różnych rozszerzeń ASCII wykorzystujących ósmy bit (np.
norma ISO 8859, rozszerzenia firm IBM lub Microsoft), nazywanych stronami
kodowymi.
Języki i metodyka programowania
Reprezentacja danych w systemach komputerowych
Unicode (zwany czasem po polsku Unikod) –
komputerowy zestaw znaków mający w zamierzeniu
obejmować wszystkie pisma używane na świecie. Definiują
go dwa standardy - Unicode oraz ISO 10646. Znaki obu
standardów są identyczne. Standardy te różnią się w
drobnych kwestiach, m.in. Unicode określa sposób składu.
Rozwijany jest przez konsorcjum, w którego skład wchodzą
ważne firmy komputerowe, producenci oprogramowania,
instytuty naukowe, agencje międzynarodowe oraz grupy
zainteresowanych
użytkowników.
Konsorcjum
współpracuje z organizacją ISO.
Języki i metodyka programowania
Reprezentacja danych w systemach komputerowych
Bit (skrót od ang. binary digit) – najmniejsza ilość
informacji potrzebna do określenia, który z dwóch równie
prawdopodobnych stanów przyjął układ. Jednostka
logiczna. Jest to również najmniejsza jednostka informacji
używana w odniesieniu do sprzętu komputerowego a
oznaczana jest za pomocą b.
●
Bajt – najmniejsza adresowalna jednostka informacji
pamięci komputerowej, składająca się z bitów. W
praktyce przyjmuje się, że jeden bajt to 8 bitów.
●
Języki i metodyka programowania
Reprezentacja danych w systemach komputerowych
Dla oznaczenia większych grup danych stosuje się
przedrostki oparte o wielokrotność liczby 1024.
Przedrostki binarne (IEC 60027-2)
Nazwa
Symbol
Mnożnik
kibibajt
KiB
210=1024
mebibajt
gibibajt
MiB
GiB
tebibajt
pebibajt
TiB
PiB
eksbibajt
zebibajt
jobibajt
EiB
ZiB
YiB
220=10242
230=10243
240=10244
250=10245
260=10246
270=10247
280=10248
Języki i metodyka programowania
Reprezentacja danych w systemach komputerowych
Systemy liczbowe:
Dwójkowy (binarny) system liczbowy to pozycyjny
system liczbowy, w którym podstawą jest liczba 2. Do
zapisu liczb potrzebne są więc tylko dwie cyfry: 0 i 1.
0b11001001 = 110010012
● Dziesiętny (decymalny) system w którym podstawą jest
liczba 10. Do zapisu wykorzystuje się cyfry: 0, 1, 2, 3, 4,
5, 6, 7, 8, 9.
201 = 20110
● Szesnastkowy
(heksadecymalny) system w którym
podstawą jest liczba 16. Do zapisu wykorzystuje się
znaki: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
0xC9 = C916
●
Języki i metodyka programowania
Reprezentacja danych w systemach komputerowych
Konwersja z systemu binarnego:
110010012
0*2+1= 1
1*2+1= 3
3*2+0= 6
6 * 2 + 0 = 12
12 * 2 + 1 = 25
25 * 2 + 0 = 50
50 * 2 + 0 = 100
100 * 2 + 1 = 201
20110
110010012
16318421
2426
8
128 + 64 + 8 + 1
20110
Języki i metodyka programowania
Reprezentacja danych w systemach komputerowych
Konwersja na system binarny:
20110
201 / 2 = 100 R 1
100 / 2 = 50 R 0
50 / 2 = 25 R 0
25 / 2 = 12 R 1
12 / 2 = 6 R 0
6/2= 3R0
3/2= 1R1
1/2= 0R1
110010012
Języki i metodyka programowania
Reprezentacja danych w systemach komputerowych
Konwersja z systemu szesnastkowego:
C916
0 * 16 + 12(C) = 12
12 * 16 + 9(9) = 201
C916
11
6
16 * 12(C) + 1 * 9
20110
20110
Języki i metodyka programowania
Reprezentacja danych w systemach komputerowych
Konwersja na system szesnastkowy:
20110
201 / 16 = 12 R 9
12 / 16 = 0 R 12
C916
Języki i metodyka programowania
Reprezentacja danych w systemach komputerowych
Konwersja binarny – szesnastkowy:
110010012
1100 1001
C
9
C916
Języki i metodyka programowania
Reprezentacja danych w systemach komputerowych
Kod uzupełnień do dwóch:
● Kod uzupełnień do dwóch (w skrócie U2 lub ZU2) jest obecnie
najpopularniejszym sposobem zapisu liczb całkowitych na bitach.
Jego popularność wynika z faktu, że operacje dodawania i
odejmowania są w nim wykonywane tak samo jak dla liczb
binarnych bez znaku. Z tego też powodu oszczędza się na kodach
rozkazów procesora.
●
●
W dwójkowym systemie liczbowym najstarszy bit liczby n-cyfrowej
ma wagę 2n–1. Jedyną różnicą, jaką wprowadza tu kod U2, jest
zmiana wagi tego bitu na przeciwną (–2n–1). Bit ten jest nazywany
bitem znaku, ponieważ świadczy o znaku całej liczby – jeśli jest
ustawiony (=1) cała liczba jest ujemna, jeśli jest skasowany (=0) –
liczba jest dodatnia lub równa 0.
Zwiększając obszar zajmowany przez liczbę w kodzie U2 (np. z
jednego bajta na dwa), dodawany obszar wypełnia się bitem znaku.
Języki i metodyka programowania
Reprezentacja danych w systemach komputerowych
Kod uzupełnień do dwóch:
Reprezentacja liczby -11110:
-11110 = NOT (11110)
111 / 2 = 55 R 1
55 / 2 = 27 R 1
27 / 2 = 13 R 1
13 / 2 = 6 R 1
6/2= 3R0
3/2= 1R1
1/2= 0R1
NOT (11011112) = 100100002
Reprezentacja liczby 111110102:
111110102 = NOT (1012)
0*2+1=1
1*2+0=2
2*2+1=5
NOT (5) = –5
Języki i metodyka programowania
Reprezentacja danych w systemach komputerowych
Kod U2 może być połączony z kodem stałopozycyjnym w celu
umożliwienia zapisu liczb niecałkowitych. Liczby takie można
traktować jako liczby całkowite przy dodawaniu i odejmowaniu. Przy
mnożeniu i dzieleniu wymagane są korekty, jeśli wynik ma mieć w
tym samym miejscu przecinek.
Zapis stałoprzecinkowy albo stałopozycyjny – jeden ze sposobów
zapisu liczb ułamkowych stosowanych w informatyce. Do zapisu
liczby stałoprzecinkowej przeznaczona jest z góry określona ilość
cyfr dwójkowych (bitów), a pozycję przecinka ustala się arbitralnie, w
zależności od wymaganej dokładności.
Np..
0.62510 = 1*0.5 + 0*0.25 + 1*0.125 = 1*2-1 + 0*2-2 + 1*2-3 = 1012
Języki i metodyka programowania
Reprezentacja danych w systemach komputerowych
Liczba zmiennoprzecinkowa jest komputerową reprezentacją liczb
rzeczywistych zapisanych w postaci wykładniczej (zwanej też notacją
naukową). Ze względu na wygodę operowania na takich liczbach
przyjmuje się ograniczony zakres na mantysę i cechę:
- mantysa K-bitowy ułamek M2,
- cecha L-bitowy wykładnik całkowity W2
W10
x10  M 10 2
gdzie M10 i W10 są dziesiętnymi odpowiednikami M2 and W2
Powoduje to, że reprezentacja jest tylko przybliżona a jedna liczba
zmiennoprzecinkowa może reprezentować różne liczby rzeczywiste z
pewnego odcinka.
Download