• Nie Znaleziono Wyników

Kodowanie danych w komputerze Wszystkie elementy, związane z komputerami (oprócz „

N/A
N/A
Protected

Academic year: 2021

Share "Kodowanie danych w komputerze Wszystkie elementy, związane z komputerami (oprócz „"

Copied!
3
0
0

Pełen tekst

(1)

Kodowanie danych w komputerze

Wszystkie elementy, związane z komputerami (oprócz „maszynerii”, hardwaru) muszą być zapisane w pamięci komputerów. W szczególności: programy, dane wejściowe z klawiatury, liczby, obrazy, dźwięki, strony internetowe itp. Wszystkie muszą być przekształcone (przetłumaczone) na język wewnętrzny komputera, czyli w słowa binarne. Omówimy w skrócie metody tego zapisywania (czyli kodowania). Powiemy o kodowaniu: znaków (inaczej symboli), liczb, obrazów, dźwięków.

Informacje wstępne. 1. Dane w pamięci komputerów zapisywane są komórkach (cells) o pojemności 1 bajta, czyli 8 bitów.

Zatem ważny jest fakt zapisywania danych w 8-io bitowych porcjach (8=23).

2. Ponieważ trudno jest zapamiętywać długie słowa (liczby) binarne np.

10000101110, więc do skrócenia zapisów informatycy stosują zapis szesnastkowy

(hexadecimal notation). W tym zapisie każdą czwórkę bitów przekształcamy w jedną cyfrę systemu szesnastkowego: 0000 -> 0, 0001 ->1, …, 1000 ->8, 1001 -> 9, 1010 ->A,…,1111 ->F.

Zatem 10000101110 to 42E. Wiemy z matematyki konkretnej, że gdy słowo binarne jest liczbą w systemie dwójkowym, to wtedy jej przekształcenie daje tę samą liczbę w systemie szesnastkowym. Na przykład (10000101110)2 = (42E)16. Aby odróżnić zapis szesnastkowy informatycy zapisują na początku (prefix) 2 symbole 0x, np. 42E to 0x42E.

Kodowanie znaków

Ze względu na olbrzymią liczbę znaków (symboli) w różnych językach, w matematyce i innych dziedzinach nauki, różnych znaków specjalnych, różnych interpretacji znaków, pojawiła się konieczność ujednolicenia (standaryzacji) znaków i symboli.

Przykład. 1. Na świecie jest około 6000 języków i to wiele ze swoimi alfabetami.

2. W USA kropka „.” oddziela część całkowitą od ułamkowej w liczbie dzisiętnej np. 23.14, a u nas przecinek „,”, czyli 23,14.

3. Duża litera „A” oznacza literę A w alfabetach: łacińskim i w greckim. Ale gdyby komputer miał zamienić tę literę na małą to nie wiedziałby o który alfabet chodzi. W każdym z nich mała litera pisze się inaczej (inny znak): a, α.

4. W pewnych językach ta sama litera w zależności od jej miejsca w słowie pisze się inaczej.

Pierwszym, ogólnie stosowanym kodowaniem był (i jest nadal) kod ASCI (American Standard Code for Information Interchange). Został wprowadzony w 1963 roku przez American National Standards Institute (ANSI). Za podstawę przyjęto 8-io bitowe (1 bajt)

(2)

kodowanie podstawowych znaków i symboli. Ponieważ wtedy 1 bit (ostatni) z tej ósemki bitów przeznaczono na kontrolę parzystości (bit parzystości)

więc można było zakodować tylko 27=128 symboli i znaków. Ponieważ był to amerykański standard więc zakodowano tylko litery łacińskie: A,B,..,a,b,.., znaki specjalne np. @ i pewne znaki kontrolne

Przykład. W kodzie ASCII:

A -> 0x41 (czyli (65)10 = (01000001)2), a -> 0x61, @ -> 0x40 (w tych kodach dodane jest 0 na początku)

W miarę rozwoju techniki cyfrowej (np. niezawodności przekazywania, transmitowania danych) bit kontrolny stracił na znaczeniu i wtedy przy 8-io bitowym kodowaniu pojawiło się kolejne 128 możliwości (z jedynką na początku). Wykorzystano je na zakodowanie nowych znaków i symboli. Ale zamiast dodać 128 nowych znaków i symboli dodano wiele „tablic”

znaków i symboli (z różnych języków, symbole matematyczne, wiele nowych znaków specjalnych itp.). Proces ten przeprowadziła międzynarodowa organizacja – International Organization for Standarization (w skrócie ISO). Te nowe tablice to:

1. ISO-8859-1 (Nazwa Latin 1) – specjalne znaki, litery języków zachodnich np. ê, ä itd.

2. ISO-8859-2 (Nazwa Latin 2) – specjalne znaki, litery języków wschodnich np. ą, Ł, б itd.

3. …aż do 17 tablicy

Jednak to nie uratowało sytuacji:

1. wszystkich znaków i symboli na świecie jest znacznie więcej,

2. kłopot powstaje z tekstami w których użyte są różne tablice znaków.

Powstało Unicode Consortium (stowarzyszenie największych firm i instytucji informatycznych na początku lat dziewięćdziesiątych), które postanowiło uporządkować generalnie sprawę z kodowaniem. Wypracowało (i nadal to robi) ogólne metody, filozofię kodowania znaków i symboli oraz opracowało jednolite kodowanie. Przyjęto za podstawę (choć rozszerzono to na więcej bitów) kodowania 16 bitów (w ASCII było to 8 bitów). Oznaczało to

216 =65 536

możliwości. Nie wszystkie zostały już wykorzystane. Powstają kolejne wersje (obecnie to Unicode 13).

Główne cechy kodowania Unicode:

1. Jednoznaczność – każdemu znakowi (symbolowi) w sensie znaczenia (czyli semantycznym) odpowiada jeden unikalny numer (kod).

(3)

2. Uniwersalność – Unicode zawiera prawie wszystkie znaki, symbole, litery prawie wszystkich języków świata i wiele innych specjalnych znaków.

3. Efektywność – nie ma potrzeby tworzenia dużej liczby konwerterów z jednego kodowania do innego (na świecie jest bardzo dużo różnych kodowań).

4. Kodowanie reprezentuje tzw. czysty tekst tzn. tzn. w kodzie danego znaku nie ma informacji o wyglądzie tego znaku (a, a, a,…), strukturze dokumentu itp.

5. Kodowanie to uwzględnia (zachowuje) logiczny porządek tzn. kolejność znaków w kodzie odpowiada kolejności pisania tych znaków (np. w języku arabskim piszemy od prawej do lewej strony).

6. Zachowuje zgodność z ASCII w zakresie podstawowych 128 znaków (za chwilę to wyjaśnimy).

Jednak w komputerach nie używa się numerów kodowania Unicode (16-bitowych), lecz bardziej ekonomicznego, efektywnego zapisu (aby często używane znaki miały krótki kod binarny w komputerach). Mianowicie, każdy znak w Unicode ma 16 bitowy numer. Dla skrótu zapisuje się je w notacji szesnastkowej, a więc każdy znak w Unicode ma 4 cyfrowy zapis szesnastkowy. Na przykład

A łacińskie to U+0041 A w cyrylicy to U+0410

A greckie to U+0391

= to U+003D ä to U+00E4

(w Microsoft Word kliknięcie Wstawianie /Symbol wyświetla okno w którym możemy odczytać te kody).

W komputerach na ogół stosuje się zapis UTF-8 (Uniform Transformation Format) który przekształca numer binarny znaku w Unicode na 1 bajt (zwany również oktetem = 8 bitów) lub na 2 oktety lub na 3 oktety lub 4 oktety (ta ostatnia możliwość dla 21 bitowego kodowania Unicode). Algorytm transformacji numeru znaku w Unicode na UTF-8 jest następujący:

Kod binarny 16 - bitowy znaku

1 oktet 2 oktet 3 oktet

00000000 0xxxxxxx 0xxxxxxx

00000yyy yyxxxxxx 110yyyyy 10xxxxxx

zzzzyyyy yyxxxxxx 1110zzzz 10yyyyyy 10xxxxxx

Przykład. (prefix U+ oznacza Unicode)

A -> U+0041  0000 0000 0100 0001 -> 01000001 - jeden oktet

ä -> U+00E4 -> 0000 0000 1110 0010 -> 11000011 10100010 – dwa oktety

Ważną zaletą UTF-8 jest że dla pierwszych 128 znaków (a więc z ASCII najbardziej popularnych) kodowania w starym ASCII i w UTF-8 są takie same. Istnieją również inne sposoby zapisu UTF-16, UTF-32 i inne.

Cytaty

Powiązane dokumenty

1 Wybierz dwa prawa rachunku zbiorów i udowodnij je formalnie (postaraj się wybrać inne prawa niż te udowodnione na

Ton wypowiedzi dawnych marksistowskich uczestników seminarium Tatarkiewicza zaczął się zmieniać i to nie tylko dlatego, że sytuacja się zmieniła, ale dlatego, że - jak

Jeśli parametr α jest całkowity, to jest to rozkład czasu oczekiwania na α-ty sukces w ciągu prób Bernoulliego, czyli jest to tzw..

Pow ołując się n a wagę owych wydarzeń, stwierdza: „(...) kryzysy te oraz sposoby ich rozwiązywania stanow ią zasadnicze m om enty zwrotne w historii

[r]

W tymże przekroju istnieje przedział domknięty niezerowej długo- ści, w którym to, jak się okaże, znajduje sie nieskończenie wiele wyrazów ciągu {ξ n }, co czyni p

*Trzy pytania muszą dotyczyć OSÓB, dwa pytania MIEJSC, dwa PRZEDMIOTÓW, trzy pytania muszą dotyczyć WYDARZEŃ przedstawionych w książce (z początku, środka i

Głównym założeniem projektu było również to, że nie planowaliśmy siedzieć przy komputerze i pisać o sporcie, ale aktywnie wziąć udział w tym, co miasto oferuje.. W