dr inż. Paweł Myszkowski

Podobne dokumenty
Kodowanie liczb. Kodowanie znaków. Reprezentacja liczb w systemach komputerowych Reprezentacja stałoprzecinkowa. dr inŝ.

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

Komunikacja człowiek-komputer

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

Kody liczbowe - Naturalny Kod Binarny (NKB) Kody liczbowe - Kod BCD. Kody liczbowe - Przechowywanie liczb w kodzie BCD

dr inż. Jarosław Forenc

Jednostki informacji cyfrowej. Kodowanie znaków. Kodowanie liczb. dr inż. Jarosław Forenc

Kodowanie informacji. Kody liczbowe

Kodowanie informacji. Przygotował: Ryszard Kijanka

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

Kody liczbowe - Naturalny Kod Binarny (NKB) Kody liczbowe - Kod BCD. Kody liczbowe - Przechowywanie liczb w kodzie BCD

Pracownia Komputerowa wyk ad VII

DZIESIĘTNY SYSTEM LICZBOWY

dr inż. Jarosław Forenc

Jednostki informacji cyfrowej. Kodowanie znaków. Kodowanie liczb. Reprezentacja liczb w systemach komputerowych. Reprezentacja stałoprzecinkowa

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc

Systemy pozycyjne. Systemy niepozycyjne. Kodowanie liczb. Kodowanie znaków. dr inż. Jarosław Forenc

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

dr inż. Jarosław Forenc

Ochrona danych osobowych. Pozycyjne systemy liczbowe. Jednostki informacji. Kodowanie znaków ASCII, ISO 8859, Unicode. Kodowanie liczb NKB, U2, BCD

1. System pozycyjny zapisu liczb

Techniki multimedialne

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

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

O oszczędnym dziennikarzu, czyli czym jest

Pracownia komputerowa. Dariusz Wardecki, wyk. VIII

Jednostki informacji cyfrowej. Kodowanie znaków. Język C. dr inż. Jarosław Forenc. FLOPS (FLoating point Operations Per Second)

1.1. Pozycyjne systemy liczbowe

Podstawy języka C++ Marek Pudełko

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

dr inż. Jarosław Forenc

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

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

Dodatek Technologie internetowe 1. UTF-8 wg 2. Adresy URL

Podstawy informatyki. Reprezentacja danych w systemach cyfrowych

Arytmetyka komputera

Kodowanie liczb całkowitych w systemach komputerowych

Liczby całkowite. Wstęp do Informatyki Podstawy arytmetyki komputerowej c.d. Kod BCD (Binary Coded Decimal) Arytmetyka liczb całkowitych

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

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

Komputerowa reprezentacja znaków i liczb. dr inż. Izabela Szczęch Politechnika Poznańska Podstawy informatyki

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

Temat 7. Dekodery, enkodery

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

Technologie Informacyjne

Instrukcja dotycząca kodów kreskowych

Model warstwowy i architektura sieci komputerowej

ARCHITEKTURA KOMPUTERÓW. Reprezentacja danych w komputerach

Architektura komputerów

Układy cyfrowe. Kodowanie informacji

PODSTAWY INFORMATYKI. Informatyka? - definicja

Pracownia Komputerowa wykład IV

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

Reprezentacja symboli w komputerze.

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

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

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

Teoretyczne Podstawy Informatyki

Podstawy programowania w C++

Podstawy informatyki. Izabela Szczęch. Politechnika Poznańska

Kombinacyjne bloki funkcjonalne - wykład 3

architektura komputerów w. 2

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

Pracownia Komputerowa wyk ad IV

Technologie informacyjne (3) Zdzisław Szyjewski

Pracownia komputerowa. Dariusz Wardecki, wyk. IV

Stan wysoki (H) i stan niski (L)

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

Wykłady 3-5. Typy danych w Pascalu. Skalarne typy danych. Działania na typach skalarnych. Funkcje standardowe. Funkcje standardowe

Wstęp doinformatyki. Systemy liczbowe i arytmetyka komputerów. System dziesiętny. Inne systemy. System dwójkowy

Architektura komputerów

Plan wyk ladu. Kodowanie informacji. Informacja wiadomość komunikat. Informacja. ecie informacji. Kodowanie znaków

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

Cyfrowy zapis informacji. 5 grudnia 2013 Wojciech Kucewicz 2

INFORMATYKA. Zajęcia organizacyjne. Arytmetyka komputerowa.

Technologie informacyjne (3) Zdzisław Szyjewski

Wstęp do Informatyki

L6.1 Systemy liczenia stosowane w informatyce

Architektura komputerów

Pracownia Komputerowa wykład V

Arytmetyka binarna - wykład 6

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

Informatyka, Ćwiczenie Uruchomienie Microsoft Visual C++ Politechnika Rzeszowska, Wojciech Szydełko. I. ZałoŜenie nowego projektu

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

Naturalny kod binarny (NKB)

Technika cyfrowa Wprowadzenie

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

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

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

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

Systemy zapisu liczb.

ARCHITEKRURA KOMPUTERÓW Kodowanie liczb ze znakiem

- Wszelka informacja przetwarzana przez system komputerowy jest ciągiem zer i jedynek. Niczym więcej.

Technika Cyfrowa i Mikroprocesorowa

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

Programowanie Niskopoziomowe

Podstawy działania układów cyfrowych...2 Systemy liczbowe...2 Kodowanie informacji...3 Informacja cyfrowa...4 Bramki logiczne...

dr inż. Jarosław Forenc

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Transkrypt:

dr inż. Paweł Myszkowski Politechnika Białostocka Wydział Elektryczny Elektronika i Telekomunikacja, semestr II, studia stacjonarne I stopnia Rok akademicki 2015/2016 Wykład nr 2 (2.03.2016)

Plan prezentacji: kodowanie liczb stałopozycyjnych kodowanie znaków

Pozycyjne systemy liczbowe a język C w języku C możemy zapisywać liczby w trzech systemach: dziesiętnym (domyślnie), np. 1924 ósemkowym (liczba poprzedzona zerem 0), np. 011 (11 (8) = 9 (10) ) szesnastkowym (liczba poprzedzona 0x lub 0X), np. 0x11 (11 (16) = 17 (10) ) Specyfikatory formatu - wyświetlanie funkcją printf() liczba dziesiętna: %d %i liczba ósemkowa: %o liczba szesnastkowa: %x %X Specyfikatory formatu wczytywanie funkcją scanf() liczba dziesiętna: %d (typ int) %D (typ long) liczba ósemkowa: %o (typ int) %O (typ long) liczba szesnastkowa: %x (typ int) %X (typ long)

Kodowanie Przetwarzane informacje: liczby, znaki, wartości logiczne, obrazy, dźwięki, itp. muszą być reprezentowane za pomocą tylko dwóch wartości: 1 stan wysoki 0 stan niski Konieczne jest przyjęcie reguł przekształcania różnych postaci informacji na wartości binarne (zero-jedynkowe) Kodowaniem nazywamy proces przekształcania jednej postaci informacji na inną postać

Klasyfikacja kodów ze względu na przeznaczenie: KODY LICZBOWE ALFANUMERYCZNE INNE NKB BCD 1 z N 2 z 5 Kołowy ASCII ISO 646 ISO 8859 EBCDIC Unicode Graya Morse'a

Klasyfikacja kodów ze względu na konstrukcję: KODY PROSTE DETEKCYJNE NKB BCD ASCII Graya 1 z N 2 z 5 ISO 646 ISO 8859 Unicode

Naturalny Kod Binarny (NKB, BCN) Naturalny Kod Binarny otrzymujemy przypisując dowolnej liczbie dziesiętnej odpowiadającą jej liczbę binarną 128 64 32 16 2 7 2 6 2 5 24 x 7 x 6 7 6 x 5 x 4 5 4 8 4 2 1 2 3 2 2 2 1 20 x 3 x 2 3 2 x 1 x 0 1 0 Liczba (10) NKB Liczba (10) NKB Liczba (10) NKB Liczba (10) NKB 0 0000 4 0100 8 1000 12 1100 1 0001 5 0101 9 1001 13 1101 2 0010 6 0110 10 1010 14 1110 3 0011 7 0111 11 1011 15 1111

Naturalny Kod Binarny (NKB, BCN) W Naturalnym Kodzie Binarnym za pomocą n-bitów można zapisać liczbę binarną z zakresu X (2) =[0,2 n -1] Maksymalne liczby binarne 1 bit 1 (2) = 2 1-1 = 1 (10) 2 bity 11 (2) = 2 2-1 = 3 (10) 3 bity 111 (2) = 2 3-1 = 7 (10) 8 bitów 11111111 (2) = 2 8-1 = 255 (10) 16 bitów 1111111111111111 (2) = 2 16-1 = 65 535 (10) 24 bity 11111..111111111 (2) = 2 24-1 = 16 777 216 (10) 32 bity 11111..111111111 (2) = 2 32-1 = 4 294 967 295 (10)

Kod BCD (Binary-Coded Decimal) sposób zapisu liczb polegający na zakodowaniu kolejnych cyfr liczby dziesiętnej przy użyciu kolejnych półbajtów (tetrad) systemu dwójkowego (NKB) w ogólnym przypadku kodowane są tylko znaki 0 9 pozostałe kombinacje bitów można wykorzystać np. do zakodowania znaku liczby Zastosowanie kalkulatory, mierniki cyfrowe data i czas w BIOS-ie systemy bankowe Liczba (10) BCD Liczba (10) BCD 0 0000 5 0101 1 0001 6 0110 2 0010 7 0111 3 0011 8 1000 4 0100 9 1001

Kod BCD przykłady 1924 (10) =? (BCD) 1 9 2 4 0001 1001 0010 0100 1924 (10) = 0001100100100100 (BCD) 1001011000110010 (BCD) =? (10) 1001 0110 0011 0010 9 6 3 2 1001011010111110 (BCD) = 9632 (10)

Kod BCD zalety i wady Przewaga BCD nad NKB: prostsze obliczenia i zaokrąglanie liczb (podstawa systemu: 10) łatwa konwersja dla potrzeb wyświetlacza 7-segmentowego mniejsze błędy obliczeń dla niektórych wartości niecałkowitych, np. 0.1 Przewaga NKB nad BCD: nadmiarowość na czterech bitach można zapisać 16 różnych wartości, a BCD korzysta tylko z dziesięciu skomplikowane operacje arytmetyczne, np. dodawanie, mnożenie

Liczba dziesiętna BCD 8421 Excess-3 BCD 2421 BCD 84-2-1 0 0000 0011 0000 0000 1 0001 0100 0001 0111 2 0010 0101 0010 0110 3 0011 0110 0011 0101 4 0100 0111 0100 0100 5 0101 1000 1011 1011 6 0110 1001 1100 1010 7 0111 1010 1101 1001 8 1000 1011 1110 1000 9 1001 1100 1111 1111

Kod 1 z N (pierścieniowy) Najbardziej rozpowszechniony wariant to kod 1 z 10 Kod wagowy (9, 8, 7, 6, 5, 4, 3, 2, 1, 0) Kod detekcyjny w czasie wykonywania operacji można testować liczbę jedynek brak jedynki lub wykrycie dwóch lub więcej wskazuje na błąd

Kod 1 z 10 Liczba (10) NKB Kod 1 z 10 0 0000 0000000001 1 0001 0000000010 2 0010 0000000100 3 0011 0000001000 4 0100 0000010000 5 0101 0000100000 6 0110 0001000000 7 0111 0010000000 8 1000 0100000000 9 1001 1000000000

Kod 2 z 5 Kod 5-bitowy jeden znak kodowany jest na 5 bitach Zawsze zapalone (1) są dwa bity, a trzy wygaszone (0) Można zakodować 10 znaków (zwykle cyfry dziesiętne) Kod stałowagowy; istnieją różne warianty kodu (01236, 74210), nie są jednak wzajemnie jednoznaczne Kod detekcyjny (stała liczba jedynek w każdym słowie kodowym) Zastosowanie: kody kreskowe

Kod 2 z 5 różne warianty Liczba dziesiętna 2 z 5 (01236) 2 z 5 (74210) 0 01100 11000 1 11000 00011 2 10100 00101 3 10010 00110 4 01010 01001 5 00110 01010 6 10001 01100 7 01001 10001 8 00101 10010 9 00011 10100

Kod kołowy 5-bitowy kod kołowy nazywany jest kodem Johnsona Zaczynając od najmniej znaczącego bitu zwiększamy liczbę stanów 1, aż do wszystkich bitów równych 1 Następnie zerujemy stany równe 1, zaczynając od najmniej znaczącego bitu, aż do osiągnięcia wartości 10000 Kod jest cykliczny, więc kolejną wartością po 10000 będzie 00000

Kod kołowy (Johnsona) Liczba (10) NKB Kod Johnsona 0 0000 00000 1 0001 00001 2 0010 00011 3 0011 00111 4 0100 01111 5 0101 11111 6 0110 11110 7 0111 11100 8 1000 11000 9 1001 10000

Kod Graya Kod dwójkowy, bezwagowy, niepozycyjny, detekcyjny Każde dwa kolejne słowa kodowe różnią się stanem zaledwie jednego bitu Kod jest cykliczny pierwsze i ostatnie słowo kodowe również różnią się stanem jednego bitu Kod ma szerokie zastosowanie w przemyśle, szczególnie do cyfrowego pomiaru analogowych wielkości mechanicznych (kąt, przesuw), a także w przetwornikach analogowo-cyfrowych

Kod Graya Kod 1-bitowy 0 1 konstrukcja n-bitowego kodu Graya: Kod 2-bitowy 00 01 11 10 dopisz do kodu (n-1)-bitowego te same słowa kodowe, ale w odwrotnej kolejności (odbicie lustrzane) do początkowych wyrazów na początku dopisz bit o wartości 0, a do odbitych bit o wartości 1 Kod 3-bitowy 000 001 011 010 110 111 101 100

Kodowanie znaków: ASCII ISO 646 (7 bitów) (7 bitów) IBM-Latin-2 Mazovia ISO 8859 (8 bitów) EBCDIC (8 bitów) UNICODE Win-1250 UTF-8 UTF-16 UTF-32

Kod ASCII American Standard Code for Information Interchange kod 7-bitowy [0-127] kody 0-31 oraz 127 kody sterujące (np. terminal) kody 32-126 litery, cyfry, znaki z klawiatury

Kod ASCII znaki "widoczne" Kod 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 Znak sp.! " # $ % & ' ( ) * +, -. / Kod 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 Znak 0 1 2 3 4 5 6 7 8 9 : ; < = >? Kod 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 Znak @ A B C D E F G H I J K L M N O Kod 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 Znak P Q R S T U V W X Y Z [ \ ] ^ _ Kod 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 Znak ` a b c d e f g h i j k l m n o Kod 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 Znak p q r s t u v w x y z { } ~

Kod ASCII znaki sterujące Kod Znak Opis Kod Znak Opis 0 NUL null 16 DLE data link escape 1 SOH start of heading 17 DC1 device control 1 2 STX start of text 18 DC2 device control 2 3 ETX end of text 19 DC3 device control 3 4 EOT end of transmission 20 DC4 device control 4 5 ENQ enquiry 21 NAK negative acknowledge 6 ACK acknowledge 22 SYN synchronous idle 7 BEL bell 23 ETB end of trans. block 8 BS backspace 24 CAN cancel 9 TAB horizontal tab 25 EM end of medium 10 LF line feed, new line 26 SUB substitute 11 VT vertical tab 27 ESC escape 12 FF form feed, new page 28 FS file separator 13 CR carriage return 29 GS group separator 14 SO shift out 30 RS record separator 15 SI shift in 31 US unit separator 127 DEL delete

Znaki sterujące w języku C/C++ NUL koniec łańcucha znaków [\0] BEL alarm, sygnał dźwiękowy [\a] BS klawisz Backspace [\b] TAB tabulator (odstęp) [\t] LF przejście do nowego wiersza [\n] CR powrót na początek wiersza [\r]

ISO / IEC 646 Pierwsze próby kodowania znaków diakrytycznych stosowany w latach 70-tych i 80-tych również kod 7-bitowy [0-127] 10 miejsc na litery danego kraju (języka) 2 miejsca na oznaczenie waluty pozostałe znaki zgodne z ASCII

ISO / IEC 646 kolor żółty znaki narodowe i symbole waluty

Polskie znaki tylko małe litery (zbyt mało miejsc) [BN-74/3101-01] Wybrane kodowania odmian narodowych:

ISO / IEC 8859 Zestaw standardów dla większości krajów świata utworzony w połowie lat 80-tych i uznany jako norma kod 8-bitowy [0-255] pełny bajt kody 0-127 tablica znaków ASCII kody 128-159 dodatkowe znaki sterujące (nieużywane) kody 160-255 znaki diakrytyczne czerwiec 2004 r. koniec prac nad standardem

ISO / IEC 8859 stosowane standardy ISO 8859-1 (Latin-1) alfabet łaciński (Europa zachodnia) ISO 8859-2 (Latin-2) łaciński (Europa środkowa i wschodnia) ISO 8859-3 (Latin-3) łaciński (Europa południowa) ISO 8859-4 (Latin-4) łaciński (Europa północna) ISO 8859-5 (Cyrillic) cyrylica ISO 8859-6 (Arabic) alfabet arabski ISO 8859-7 (Greek) alfabet grecki ISO 8859-8 (Hebrew) alfabet hebrajski ISO 8859-9 (Latin-5) ISO 8859-10 (Latin-6) ISO 8859-11 (Thai) alfabet tajski ISO 8859-12 brak ISO 8859-13 (Latin-7) ISO 8859-14 (Latin-8) występują polskie znaki ISO 8859-15 (Latin-9) ISO 8859-16 (Latin-10) łaciński (Europa środkowa; są polskie znaki)

ISO / IEC 8859-1 ("zachodnioeuropejskie") dostępne języki: albański, angielski, baskijski, duński, estoński, fiński, francuski, hiszpański, irlandzki, islandzki, kataloński, łaciński, niderlandzki, niemiecki, norweski, portugalski, retoromański, szkocki, szwedzki, włoski ISO / IEC 8859-2 ("środkowo-", "wschodnioeuropejskie") dostępne języki: bośniacki, chorwacki, czeski, węgierski, polski, rumuński, serbski, serbsko-chorwacki, słowacki, słoweński, górno- i dolnołużycki kodowanie zgodne z Polską Normą

Porównanie ISO / IEC 8859-1 oraz ISO / IEC 8859-2 Polskie znaki: Ą ą Ć ć Ę ę Ł ł Ń ń Ó ó Ś ś Ź ź Ż ż

EBCDIC Próba wykorzystania kodu BCD do kodowania znaków Extended Binary Coded Decimal Interchange Code stosowany głównie w systemach IBM w latach 60-tych kod 8-bitowy [0-255] nie ma nawet częściowej zgodności z ASCII nie zachowuje kolejności liter, np. po i nie występuje j

Porównanie EBCDIC oraz ISO / IEC 8859-1

Problem kodowania polskich znaków w Polsce stosowano ok. 20 schematów kodowania polskich liter przymiarki do wprowadzenia standardu: Mazovia promowany przez społeczność informatyczną (określał sposób kodowania polskich liter, choć nie był pełną stroną kodową) IBM-Latin-2 (CP-852) wprowadzony przez IBM i Microsoft, stosowany w systemach DOS, OS/2 i częściowo w Windows Windows-1250 (CP-1250) wprowadzony w polskiej wersji językowej systemu Windows ISO-Latin-2 (ISO 8859-2) stosowany w Internecie rok 1993: wprowadzenie normy PN-93 T-42118 "Technika informatyczna. Znormalizowane zbiory znaków graficznych przeznaczone do stosowania w kodach 8-bitowych." więcej informacji: http://www.ogonki.agh.edu.pl

Różnice w kodowaniu polskich znaków Litera Mazovia IBM Latin-2 Windows-1250 ISO Latin-2 Ą 143 164 165 161 Ć 149 143 198 198 Ę 144 168 202 202 Ł 156 157 163 163 Ń 165 227 209 209 Ó 163 224 211 211 Ś 152 151 140 166 Ź 160 141 143 172 Ż 161 189 175 175 ą 134 165 185 177 ć 141 134 230 230 ę 145 169 234 234 ł 146 136 179 179 ń 164 228 241 241 ó 162 162 243 243 ś 158 152 156 182 ź 166 171 159 188 ż 167 190 191 191

Windows-1250 Przez długi czas był standardem ze względu na pozycję firmy strona kodowa używana przez system Microsoft Windows do reprezentacji tekstów w językach środkowoeuropejskich, bazujących na alfabecie łacińskim obsługiwane języki: albański, chorwacki, czeski, polski, rumuński, słowacki, słoweński, węgierski, także niemiecki duży stopień podobieństwa do ISO 8859-2: Windows-1250 posiada wszystkie jego drukowalne znaki (plus dodatkowe), jednak niektóre zajmują inne miejsca

Porównanie ISO 8859-2 oraz Windows-1250

Problem z kompatybilnością w praktyce tekst zapisany w standardzie ISO-8859-2 Ą Ć Ę Ł Ń Ó Ś Ź Ż ą ć ę ł ń ó ś ź ż ten sam tekst wyświetlony w systemie Windows jako Windows-1250 (np. w Notatniku) Ć Ę Ł Ń Ó Ż ± ć ę ł ń ó Ľ ż

Unicode (Unikod) Ostateczne rozwiązanie? Unicode komputerowy zestaw znaków, który ma 0bługiwać wszystkie pisma i inne znaki (np. symbole muzyczne, techniczne) używane na świecie przypisuje unikalny numer każdemu znakowi, niezależny od używanego systemu, programu czy języka reprezentuje znaki w postaci abstrakcyjnej to oprogramowanie dobiera postać wizualną (czcionkę, rozmiar) zdefiniowany przez dwa standardy Unicode oraz ISO / IEC 10646 w których znaki są identyczne obsługiwany przez nowe technologie (Java, XML,.NET Framework)

Unicode (Unikod) rozwijany przez konsorcjum skupiające firmy komputerowe, twórców oprogramowania oraz użytkowników koduje w sumie 110 116 znaków! pierwsza wersja: październik 1991 (Unicode 1.0) ostatnia wersja: czerwiec 2015 (Unicode 8.0) więcej informacji: http://www.unikod.pl

Unicode - podział Zakres Znaczenie 0000 007F Basic Latin (to samo co w ASCII) 0080 00FF Latin-1 Supplement (to samo co w ISO 8859-1) 0100 017F Latin Extended-A 0180 024F Latin Extended-B 0250 02AF IPA Extensions (International Phonetic Alphabet) 02B0 02FF Spacing Modifiers Letters 0370 03FF Greek 0400 04FF Cyrillic 1D00 1D7F Phonetic Extensions 1D80 1DBF Phonetic Extensions Supplement 1E00 1EFF Latin Extended Additional 1F00 1FFF Greek Extended

Unicode (Unikod) standard definiuje kody numeryczne przypisane poszczególnym znakom, ale nie określa sposobu ich bajtowego kodowania kodowanie określa, w jaki sposób znaki ze zbioru mają być przedstawione w postaci binarnej istnieją trzy podstawowe metody kodowania (i wiele dodatkowych): UTF-32 UFT-16 UTF-8 UTF UCS znak kodowany na 32 bitach (4 bajty) znak kodowany na 16 bitach (2 bajty) znak kodowany na 8 bitach (1 bajt) UCS Transformation Format Universal Character Set każda z metod obejmuje wszystkie kodowane w Unicode znaki

Unicode (Unikod) w zależności od metody kodowania znak opisany jest za pomocą różnej liczby bajtów źródło: http://www.w3.org/

Kodowanie UTF-32 sposób kodowania wymagający użycia 32-bitowych słów kod znaku przedstawia numer w tabeli Unicode i ma zawsze stałą długość (4 bajty) kody obejmują zakres od 0 do 0x10FFFF (16) (od 0 do 1 114 111 (10) ) w przypadku typowych znaków ten typ jest bardzo nieefektywny (np. litera 'A' w ISO 8859 zajmuje tylko 1 bajt)

Kodowanie UTF-16 sposób kodowania wymagający użycia 16-bitowych słów znaki z przedziału od 0 do 0xFFFF kodowane są jednym słowem, którego wartość jest jednocześnie kodem znaku w Unicode znaki z wyższych pozycji kodowane są za pomocą dwóch słów: pierwsze słowo z przedziału: drugie słowo z przedziału: 0xD800 0xDBFF 0XDC00 0xDFFF

Kodowanie UTF-8 kodowanie ze zmienną długością reprezentacji znaku, wymagające użycia 8-bitowych słów znaki mapowane są na ciągi bajtów 0x00 do 0x7F - bity 0xxxxxxx 0x80 do 0x7FF - bity 110xxxxx 10xxxxxx 0x800 do 0xFFFF - bity 1110xxxx 10xxxxxx 10xxxxxx 0x10000 do 0x1FFFFF - bity 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 0x200000 do 0x3FFFFFF - bity 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 0x4000000 do 0x7FFFFFFF - bity 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

Kodowanie UTF-8 Zalety kodowania UTF-8 każdy znak z ASCII jest znakiem w UTF-8, a żaden znak spoza ASCII nie zawiera bajtu z ASCII o każdym bajcie wiadomo, czy jest początkiem znaku, czy leży w środku tekst zakodowany w ISO-Latin-x przybiera na objętości w niewielkim stopniu po przekodowaniu go do UTF-8 Wady kodowania UTF-8 znaki alfabetów nie-łacińskich (np. polskie znaki) zajmują po dwa bajty, a w kodowaniach narodowych (np. ISO 8859-2) tylko jeden

Przykłady '?' znak zapytania, kod ASCII = 3F (16) = 63 (10) 63 (10) = 11111 (2) I zakres, kod UTF-8: 00011111 (2) ' ' mała grecka litera mikro, kod Unicode = B5 (16) = 181 (10) 181 (10) = 10110101 (2) II zakres, kod UTF-8: 11000010 10110101 (2)

Polskie litery w Unicode małe litery Litera ą ć ę ł ń ó ś ź ż Kod 0105 0107 0119 0142 0144 00F3 015B 017A 017C wielkie litery Litera Ą Ć Ę Ł Ń Ó Ś Ź Ż Kod 0104 0106 0118 0141 0143 00D3 015A 0179 017B

Uwaga praktyczna program pracujący w oknie konsoli korzysta ze strony kodowej CP 852 (IBM-Latin-2) stronę kodową w oknie konsoli można sprawdzić i zmienić poleceniem systemowym CHCP (CHange Code Page) >system("chcp"); >Aktywna strona kodowa: 852 >system("chcp 1250"); >Aktywna strona kodowa: 1250 wykorzystanie innej strony kodowej i uzyskanie polskich liter wymaga dodatkowo zmiany czcionki w ustawieniach okna konsoli

Dziękuję za uwagę. Kolejny wykład: 9 marca 2016 Zapraszam!