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

Podobne dokumenty
Komunikacja człowiek-komputer

Jednostki informacji cyfrowej. Kodowanie znaków. Kodowanie liczb. 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

Pracownia Komputerowa wyk ad VII

dr inż. Jarosław Forenc

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

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

dr inż. Jarosław Forenc

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

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

dr inż. Jarosław Forenc

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

dr inż. Paweł Myszkowski

dr inż. Jarosław Forenc

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

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

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

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

Kodowanie informacji. Kody liczbowe

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

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

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

Pracownia komputerowa. Dariusz Wardecki, wyk. VIII

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

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

Techniki multimedialne

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

Podstawy informatyki. Reprezentacja danych w systemach cyfrowych

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

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

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

INFORMATYKA. Zajęcia organizacyjne. Arytmetyka komputerowa.

PODSTAWY INFORMATYKI. Informatyka? - definicja

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

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

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

DZIESIĘTNY SYSTEM LICZBOWY

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

Technologie Informacyjne

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

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

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

1.1. Pozycyjne systemy liczbowe

Wstęp do Informatyki

Teoretyczne Podstawy Informatyki

Systemy kodowania. Jolanta Bachan

Podstawy programowania w C++

Kodowanie liczb całkowitych w systemach komputerowych

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

Temat 7. Dekodery, enkodery

Arytmetyka komputera

O oszczędnym dziennikarzu, czyli czym jest

Pracownia Komputerowa wykład IV

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

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

Pracownia komputerowa. Dariusz Wardecki, wyk. IV

Stan wysoki (H) i stan niski (L)

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

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

Cyfrowy zapis informacji. 5 grudnia 2013 Wojciech Kucewicz 2

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

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Pracownia Komputerowa wyk ad IV

Technika cyfrowa Wprowadzenie

Architektura komputerów

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

Architektura komputerów

1. Wprowadzanie danych z klawiatury funkcja scanf

Reprezentacja stałoprzecinkowa. Reprezentacja zmiennoprzecinkowa zapis zmiennoprzecinkowy liczby rzeczywistej

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

Pracownia Komputerowa wykład V

Technika Cyfrowa i Mikroprocesorowa

Politechnika Białostocka, Wydział Elektryczny, Katedra Elektrotechniki Teoretycznej i Metrologii ul. Wiejska 45D, Białystok

Reprezentacja symboli w komputerze. Znaki alfabetu i łańcuchy znakowe. Programowanie Proceduralne 1

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

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

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Architektura komputerów

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Naturalny kod binarny (NKB)

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

Cyfrowy zapis informacji

Podstawy informatyki (2)

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

Arytmetyka binarna - wykład 6

Systemy zapisu liczb.

dr inż. Jarosław Forenc

Pracownia Komputerowa wykład VI

Reprezentacja symboli w komputerze.

Typ użyty w deklaracji zmiennej decyduje o rodzaju informacji, a nazwa zmiennej symbolicznie opisuje wartość.

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

Programowanie Niskopoziomowe

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

Proste typy zmiennych języka C++ *) Zapis 3.4 e-38 jest równoważny zapisowi 3,

Systemy liczbowe używane w technice komputerowej

SYSTEMY LICZBOWE 275,538 =

Transkrypt:

Rok akademicki 2/2, Wykład nr 3 2/53 Plan wykładu nr 3 Informatyka Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne I stopnia Rok akademicki 2/2 Kodowanie liczb kod kołowy (Johnsona), kod Graya (refleksyjny) Kodowanie znaków kod ASCII, ISO/IEC 646, ISO/IEC 8859 EBCDIC, Windows-25, Unicode Reprezentacja liczb w systemach komputerowych Reprezentacja stałoprzecinkowa reprezentacja liczb bez znaku i ze znakiem w języku C Wykład nr 3 (4.3.2) dr inż. Jarosław Forenc Rok akademicki 2/2, Wykład nr 3 3/53 Rok akademicki 2/2, Wykład nr 3 4/53 Kodowanie Kody liczbowe - Kod kołowy Począwszy od najmniej znaczącego bitu zwiększa się liczba stanów aż do wszystkich bitów równych Następnie stanów zaczyna ubywać (począwszy od najmniej znaczącego bitu) aż do osiągnięcia wartości Kolejną wartością po będzie ponownie 5-bitowy kod kołowy nazywany jest kodem Johnsona

Rok akademicki 2/2, Wykład nr 3 5/53 Rok akademicki 2/2, Wykład nr 3 6/53 Kody liczbowe - Kod Graya (refleksyjny) Kod dwójkowy bezwagowy, niepozycyjny, charakteryzujący się tym, że dwa kolejne słowa kodowe różnią się stanem jednego bitu Kod cykliczny - ostatni i pierwszy wyraz również spełniają powyższą zasadę Kody liczbowe - Kod Graya Stosowany w przetwornikach analogowo-cyfrowych, do cyfrowego pomiaru analogowych wielkości mechanicznych (przesuw liniowy, kąt obrotu) Konstrukcja kodu Graya: dopisz te same słowa kodowe, ale w odwrotnej kolejności (lustrzane odbicie) do początkowych wyrazów dopisz bit o wartości, natomiast do odbitych lustrzanie bit o wartości kod Graya kod NKB Rok akademicki 2/2, Wykład nr 3 7/53 Rok akademicki 2/2, Wykład nr 3 8/53 Kody liczbowe - Kod Graya Stosowany w przetwornikach analogowo-cyfrowych, do cyfrowego pomiaru analogowych wielkości mechanicznych (przesuw liniowy, kąt obrotu) http://tams-www.informatik.uni-hamburg.de /applets/hades/webdemos/-gates/5-graycode/dual2gray.html Kod ASCII ASCII - American Standard Code for Information Interchange 7-bitowy kod przypisujący liczby z zakresu -27 literom (alfabetu angielskiego), cyfrom, znakom przestankowym i innym symbolom oraz poleceniom sterującym litery, cyfry oraz inne znaki drukowane tworzą zbiór znaków ASCII - jest to 95 znaków o kodach 32-26 pozostałe 33 kody (-3 i 27) to tzw. kody sterujące służące do sterowania urządzeniami typu drukarka czy terminal

Rok akademicki 2/2, Wykład nr 3 9/53 Rok akademicki 2/2, Wykład nr 3 /53 Kod ASCII - Kody sterujące Kody sterujące - 33 kody, o numerach: -3, 27 Kod ASCII - Kody sterujące a język C () = (6) NUL - koniec łańcucha znaków, zapis: \ 7 () = 7 (6) BEL - alarm, dźwięk głośniczka, zapis: \a 8 () = 8 (6) BS - klawisz Backspace, zapis: \b 9 () = 9 (6) TAB - tabulacja (odstęp), zapis: \t () = A (6) LF - przejście do nowego wiersza, zapis: \n 3 () = D (6) CR - powrót na początek wiersza, zapis: \r 27 () = B (6) ESC - klawisz Escape 27 () = 7F (6) DEL - klawisz Delete Rok akademicki 2/2, Wykład nr 3 /53 Rok akademicki 2/2, Wykład nr 3 2/53 Kod ASCII - Pliki tekstowe Kod ASCII - Pliki tekstowe Elementami pliku tekstowego są wiersze, mogą one mieć różną długość W systemie Windows każdy wiersz pliku zakończony jest parą znaków: CR, ang. carriage return - powrót karetki, kod ASCII - 3 () = D (6) LF, ang. line feed - przesunięcie o wiersz, kod ASCII - () = A (6) Załóżmy, że plik tekstowy ma postać: Rzeczywista zawartość pliku jest następująca: W czasie wczytywania tekstu z pliku do pamięci komputera znaki CR i LF zastępowane są jednym znakiem - LF Znak LF w języku C reprezentowany jest przez \n, zaś CR - przez \r #include <stdio.h> int main() { printf("\\n --> %d %X\n",'\n','\n'); printf("\\r --> %d %X\n",'\r','\r'); \n --> A \r --> 3 D } return ; Wydruk zawiera: przesunięcie od początku pliku (szesnastkowo) wartości poszczególnych bajtów pliku (szesnastkowo) znaki odpowiadające bajtom pliku (traktując je jako kody ASCII) Przy zapisywaniu łańcucha znaków do pliku tekstowego mamy sytuację odwrotną - znak LF zastępowany jest parą CR i LF

Rok akademicki 2/2, Wykład nr 3 3/53 Rok akademicki 2/2, Wykład nr 3 4/53 Kod ASCII - Pliki tekstowe W systemie Linux znakiem końca wiersza jest tylko LF o kodzie ASCII - () = A (6) Załóżmy, że plik tekstowy ma postać: ISO/IEC 646 ISO/IEC 646 - norma definiująca modyfikację 7-bitowego kodowania ASCII, stosowana w latach 7-tych i 8-tych W normie określono pozycji na znaki w języku kraju, który przyjął tę normę oraz 2 pozycje na znaki walut Rzeczywista zawartość pliku jest następująca: Podczas przesyłania pliku tekstowego (np. przez protokół ftp) z systemu Linux do systemu Windows pojedynczy znak LF zamieniany jest automatycznie na parę znaków CR i LF Błędne przesłanie pliku tekstowego (w trybie binarnym) powoduje nieprawidłowe jego wyświetlanie: 2 3 4 5 6 7 8 9 A B C D E F Znaki kontrolne 2 SP! " # $ % & ( ) * +, -. / 3 2 3 4 5 6 7 8 9 : ; < = >? 4 @ A B C D E F G H I J K L M N O 5 P Q R S T U V W X Y Z [ \ ] ^ _ 6 ` a b c d e f g h i j k l m n o 7 p q r s t u v w x y z { } ~ Wszystkie pozostałe znaki są zgodne z ASCII żółty - znaki narodowe niebieski - znaki walut Rok akademicki 2/2, Wykład nr 3 5/53 Rok akademicki 2/2, Wykład nr 3 6/53 ISO/IEC 646 - odmiany narodowe Rozszerzenia ASCII - strony kodowe Ponieważ kod ASCII jest w podstawowej wersji 7-bitowy, a większość komputerów pracuje na 8-bitowych bajtach, to dodatkowy bit jest wykorzystywany do powiększenia zbioru kodowanych znaków Powstało wiele różnych rozszerzeń ASCII wykorzystujących ósmy bit, nazywanych stronami kodowymi Norma: BN-74/3- Strona kodowa - sposób na przypisanie poszczególnym kodom binarnym różnych znaków pisarskich różne strony kodowe mogą przyjąć odmienne znaki dla tego samego kodu, różne strony kodowe mogą różnić się wyborem znaków duża liczba dostępnych stron kodowych wynika z faktu, iż na 8 bitach można zakodować tylko 256 różnych znaków, co jest niewystarczające do zmieszczenia w jednym zestawie znaków wszystkich alfabetów problem stron kodowych został rozwiązany po wprowadzeniu Unicode

Rok akademicki 2/2, Wykład nr 3 7/53 Rok akademicki 2/2, Wykład nr 3 8/53 ISO/IEC 8859 ISO/IEC 8859 - zestaw standardów służących do kodowania znaków za pomocą 8-bitów Standardy te zostały utworzone przez European Computer Manufacturers Association w połowie lat 8-tych, po czym zostały uznane przez ISO Wszystkie zestawy ISO 8859 mają znaki () -27 () ( (6) -7F (6) ) takie same jak w kodzie ASCII Pozycjom 28 () -59 () (8 (6) -9F (6) ) przypisane są dodatkowe kody sterujące, tzw. C (obecnie nie są używane) W czerwcu 24 roku, grupa robocza odpowiedzialna za utrzymanie zestawów znaków kodowanych ośmiobitowo została rozwiązana, wstrzymane zostały prace związane z ISO 8859, a skoncentrowano się na uniwersalnym zestawie znaków (UCS-2) i Unicode ISO/IEC 8859 Stosowane standardy ISO 8859: ISO 8859- (Latin-) - alfabet łaciński dla Europy zachodniej ISO 8859-2 (Latin-2) - łaciński dla Europy środkowej i wschodniej ISO 8859-3 (Latin-3) - łaciński dla Europy południowej ISO 8859-4 (Latin-4) - łaciński dla Europy północnej ISO 8859-5 (Cyrillic) - dla cyrylicy ISO 8859-6 (Arabic) - dla alfabetu arabskiego ISO 8859-7 (Greek) - dla alfabetu greckiego ISO 8859-8 (Hebrew) - dla alfabetu hebrajskiego ISO 8859-9 (Latin-5) ISO 8859- (Latin-6) ISO 8859- (Thai) - dla alfabetu tajskiego ISO 8859-2 - brak ISO 8859-3 (Latin-7) ISO 8859-4 (Latin-8) - zawiera polskie znaki ISO 8859-5 (Latin-9) ISO 8859-6 (Latin-) - łaciński dla Europy środkowej, zawiera polskie znaki Rok akademicki 2/2, Wykład nr 3 9/53 Rok akademicki 2/2, Wykład nr 3 2/53 ISO/IEC 8859- ISO/IEC 8859-2 ISO/IEC 8859-, Latin- - pierwsza część standard ISO/IEC 8859 ( zachodnioeuropejskie ) kodowanie używane w Amerykach, Europie Zachodniej, Oceanii i większej części Afryki 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 składa się ze 9 znaków łacińskiego pisma SP - spacja NBSP - twarda spacja SHY - miękki dywiz (myślnik) ISO/IEC 8859-2, Latin-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 możliwość przedstawienia znaków w języku niemieckim i angielskim składa się ze 9 znaków łacińskiego pisma zapisywanych na 8-bitach kody z przedziałów (6) -F (6) oraz 7F (6) -9F (6) nie są używane w ISO-8859-2 kodowanie zgodne z Polską Normą SP - spacja NBSP - twarda spacja SHY - miękki dywiz (myślnik)

Rok akademicki 2/2, Wykład nr 3 2/53 Rok akademicki 2/2, Wykład nr 3 22/53 ISO/IEC 8859-2 - Kodowanie polskich znaków ISO/IEC 8859- i ISO/IEC 8859-2 - porównanie 8 znaków: Ą - ą Ć - ć Ę - ę Ł - ł Ń - ń Ó - ó Ś - ś Ź - ź Ż - ż Rok akademicki 2/2, Wykład nr 3 23/53 Rok akademicki 2/2, Wykład nr 3 24/53 EBCDIC EBCDIC EBCDIC - Extended Binary Coded Decimal Interchange Code 8-bitowe kodowanie znaków stworzone jako rozszerzenie kodowania BCD umożliwia zapisanie do 256 różnych symboli pojedynczy znak zapisywany jest na 8-bitach podzielonych na dwie części pierwsze 4 bity oznaczają grupę do jakiej dany znak należy ostatnie 4 bity identyfikują konkretny znak kody EBCDIC nie są zgodne z ASCII używane głównie w systemach IBM w latach 6-tych XX wieku nie ma szczególnej przewagi nad systemami ISO 8859 i Unicode, a wręcz czasem sprawia problemy brak zachowania kolejności liter zgodnie z kolejnością kodów, np. po R nie ma S EBCDIC występowało w wielu wersjach, odmiennych dla różnych państw większość stron kodowych EBCDIC dopuszczała stosowanie tylko dwóch języków (angielski + dodatkowy) na rysunku przedstawiony jest jeden z wariantów EBCDIC - CCSID 5

Rok akademicki 2/2, Wykład nr 3 25/53 Rok akademicki 2/2, Wykład nr 3 26/53 EBCDIC i ISO 8859- - porównanie Windows-25 Windows-25 (CP-25) - strona kodowa używana przez system Microsoft Windows do reprezentacji tekstów w językach środkowoeuropejskich używających alfabetu łacińskiego Obsługiwane języki: albański, chorwacki, czeski, polski, rumuński, słowacki, słoweński, węgierski (ale także niemiecki) Windows-25 jest podobny do ISO 8859-2 - posiada wszystkie jego drukowalne znaki (a także kilka dodatkowych), lecz kilka z nich zajmuje inne miejsca Rok akademicki 2/2, Wykład nr 3 27/53 Rok akademicki 2/2, Wykład nr 3 28/53 ISO 8859-2 i Windows-25 - porównanie Problem kodowania polskich znaków Problem z wyświetlaniem polskich znaków Tekst zapisany w standardzie ISO-8859-2: Ą Ć Ę Ł Ń Ó Ś Ź ś ą ć ę ł ń ó ś ź Ŝ Tekst wyświetlony w Notatniku systemu Windows (Windows-25): ˇ Ć Ę Ł Ń Ó ś ± ć ę ł ń ó Ľ Ŝ

Rok akademicki 2/2, Wykład nr 3 29/53 Rok akademicki 2/2, Wykład nr 3 3/53 Problem kodowania polskich znaków W Polsce stosowanych było ok. 2 standardów kodowania polskich liter Dużo informacji o kodowaniu: http://www.ogonki.agh.edu.pl Próby wprowadzania standardu: Mazovia - promowany przez społeczność informatyczną w Polsce (nie był pełną stroną kodową, ale określał sposób kodowania polskich liter) IBM-Latin-2 (CP-852) - wprowadzony przez IBM i Microsoft, stosowany w DOS, OS/2 i części systemu Windows CP-25 (Windows-25) - wprowadzony przez Microsoft Windows PL ISO-Latin-2 (ISO 8859-2) - stosowany w Internecie Standard ISO 8859-2 jest zgodny z Polską Normą PN-93 T-428 Technika informatyczna. Znormalizowane zbiory znaków graficznych przeznaczone do stosowania w kodach 8-bitowych (993 rok) Standardy kodowania polskich znaków Litera Mazovia IBM Latin-2 Windows 25 ISO Latin-2 Ą 43 64 65 6 Ć 49 43 98 98 Ę 44 68 22 22 Ł 56 57 63 63 Ń 65 227 29 29 Ó 63 224 2 2 Ś 52 5 4 66 Ź 6 4 43 72 Ż 6 89 75 75 ą 34 65 85 77 ć 4 34 23 23 ę 45 69 234 234 ł 46 36 79 79 ń 64 228 24 24 ó 62 62 243 243 ś 58 52 56 82 ź 66 7 59 88 ż 67 9 9 9 Rok akademicki 2/2, Wykład nr 3 3/53 Rok akademicki 2/2, Wykład nr 3 32/53 Standardy kodowania polskich znaków Litera Mazovia IBM Latin-2 Windows 25 ISO Latin-2 Ą 43 64 65 6 Ć 49 43 98 98 Ę 44 68 22 22 Ł 56 57 63 63 Ń 65 227 29 29 Ó 63 224 2 2 Ś 52 5 4 66 Ź 6 4 43 72 Ż 6 89 75 75 ą 34 65 85 77 ć 4 34 23 23 ę 45 69 234 234 ł 46 36 79 79 ń 64 228 24 24 ó 62 62 243 243 ś 58 52 56 82 ź 66 7 59 88 ż 67 9 9 9 Unicode Unicode - w Polsce używana jest także nazwa Unikod Unicode - komputerowy zestaw znaków mający w zamierzeniu obejmować wszystkie pisma i inne znaki (symbole muzyczne, techniczne, wymowy) używane na świecie Unicode przypisuje unikalny numer każdemu znakowi, niezależny od używanej platformy, programu czy języka Unikod reprezentuje znaki w postaci abstrakcyjnej pozostawiając postać wizualną (rozmiar, kształt, czcionkę, styl) innemu oprogramowaniu Definiowany jest przez dwa standardy, w których znaki są identyczne: Unicode i ISO/IEC 646 Standard Unicode zaimplementowany został w wielu nowych technologiach, np. XML, Java, Microsoft.NET Framework

Rok akademicki 2/2, Wykład nr 3 33/53 Rok akademicki 2/2, Wykład nr 3 34/53 Unicode Rozwijany jest przez konsorcjum, w skład którego wchodzą firmy komputerowe, producenci oprogramowania oraz grupy użytkowników Konsorcjum: http://www.unicode.org Pierwsza wersja: Unicode. (.99) Ostatnia wersja: Unicode 6.. (październik 2) The Unicode Consortium. The Unicode Standard, Version 6.., (Mountain View, CA: The Unicode Consortium, 2 - Core Specification - PDF, 3 MB, 67 str. - Code Charts - PDF, 75 MB, 923 str. http://www.unicode.org/versions/unicode6../ koduje 9.449 znaków Polska strona o Unikodzie: http://www.unikod.pl Unicode - Zakresy Zakres: Znaczenie: - 7F Basic Latin (to samo co w ASCII) 8 - FF Latin- Supplement (to samo co w ISO/IEC 8859-) - 7F Latin Extended-A 8-24F Latin Extended-B 25-2AF IPA Extensions 2B - 2FF Spacing Modifiers Letters... 37-3FF Greek 4-4FF Cyrillic... D - D7F Phonetic Extensions D8 - DBF Phonetic Extensions Supplement E - EFF Latin Extended Additional F - FFF Greek Extended... Rok akademicki 2/2, Wykład nr 3 35/53 Rok akademicki 2/2, Wykład nr 3 36/53 Unicode Standard Unicode definiuje kody numeryczne przypisane poszczególnym znakom, nie określa natomiast sposobu bajtowego kodowania znaków Unicode Metody kodowania różnią się liczbą bajtów przeznaczonych do opisania kodu znaku Kodowanie określa sposób w jaki znaki ze zbioru mają być zapisane w postaci binarnej Istnieją trzy podstawowe metody kodowania: 32-bitowe: UTF-32 6-bitowe: UTF-6 8-bitowe: UTF-8 Wszystkie metody obejmują wszystkie kodowane znaki w Unicode Metody kodowania mogą być stosowane wymiennie, ale każda z nich ma zalety w innym środowisku źródło: The Unicode Consortium. The Unicode Standard, Version 5.2.

Rok akademicki 2/2, Wykład nr 3 37/53 Rok akademicki 2/2, Wykład nr 3 38/53 Unicode - kodowanie UTF-32 UTF-32 - sposób kodowania standardu Unicode wymagający użycia 32-bitowych słów Unicode - kodowanie UTF-6 UTF-6 - sposób kodowania standardu Unicode wymagający użycia 6-bitowych słów Kod znaku ma zawsze stałą długość 4 bajtów i przedstawia numer znaku w tabeli Unikodu Kody obejmują zakres od do xffff Kodowanie to jest jednak bardzo nieefektywne - zakodowane ciągi znaków są 2-4 razy dłuższe niż ciągi tych samych znaków zapisanych w innych kodowaniach Dla znaków z przedziału od do xffff używane jest jedno słowo, którego wartość jest jednocześnie kodem znaku w Unicode Dla znaków z wyższych pozycji używa się dwóch słów: pierwsze słowo należy do przedziału: xd8-xdbff drugie słowo należy do przedziału: xdc-xdfff Rok akademicki 2/2, Wykład nr 3 39/53 Rok akademicki 2/2, Wykład nr 3 4/53 Unicode - kodowanie UTF-8 UTF-8 - kodowanie ze zmienną długością reprezentacji znaku wymagające użycia 8-bitowych słów Znaki Unikodu są mapowane na ciągi bajtów x do x7f - bity xxxxxxx x8 do x7ff - bity xxxxx xxxxxx x8 do xffff - bity xxxx xxxxxx xxxxxx x do xfffff - bity xxx xxxxxx xxxxxx xxxxxx x2 do x3ffffff - bity xx xxxxxx xxxxxx xxxxxx xxxxxx x4 do x7fffffff - bity x xxxxxx xxxxxx xxxxxx xxxxxx xxxxxx Unicode - kodowanie UTF-8 Zalety kodowania UTF-8 każdy tekst w ASCII jest tekstem w UTF-8, a żaden znak spoza ASCII nie zawiera bajtu z ASCII typowy tekst ISO-Latin-x rozrasta się w bardzo niewielkim stopniu po przekonwertowaniu go do UTF-8 o każdym bajcie wiadomo czy jest początkiem znaku, czy też leży w środku Wady kodowania UTF-8 znaki alfabetów niełacińskich zajmują po dwa bajty zamiast jednego jak jest to w kodowaniach narodowych

Rok akademicki 2/2, Wykład nr 3 4/53 Rok akademicki 2/2, Wykład nr 3 42/53 Unicode - polskie znaki Reprezentacja liczb w systemach komputerowych Kod Litera Opis 5 ą LATIN SMALL LETTER A WITH OGONEK 7 ć LATIN SMALL LETTER C WITH ACUTE 9 ę LATIN SMALL LETTER E WITH OGONEK 42 ł LATIN SMALL LETTER L WITH STROKE 44 ń LATIN SMALL LETTER N WITH ACUTE F3 ó LATIN SMALL LETTER O WITH ACUTE 5B ś LATIN SMALL LETTER S WITH ACUTE 7A ź LATIN SMALL LETTER Z WITH ACUTE 7C ż LATIN SMALL LETTER Z WITH DOT ABOVE 4 Ą LATIN CAPITAL LETTER A WITH OGONEK 6 Ć LATIN CAPITAL LETTER C WITH ACUTE 8 Ę LATIN CAPITAL LETTER E WITH OGONEK 4 Ł LATIN CAPITAL LETTER L WITH STROKE 43 Ń LATIN CAPITAL LETTER N WITH ACUTE D3 Ó LATIN CAPITAL LETTER O WITH ACUTE 5A Ś LATIN CAPITAL LETTER S WITH ACUTE 79 Ź LATIN CAPITAL LETTER Z WITH ACUTE 7B Ż LATIN CAPITAL LETTER Z WITH DOT ABOVE Stosowane są także pojęcia: reprezentacja stałopozycyjna i zmiennopozycyjna format stałopozycyjny i zmiennopozycyjny liczba stałopozycyjna i zmiennopozycyjna Rok akademicki 2/2, Wykład nr 3 43/53 Rok akademicki 2/2, Wykład nr 3 44/53 Reprezentacja stałoprzecinkowa, bez znaku (język C) Rozpatrzmy zapis liczby w systemie stałoprzecinkowym dwójkowym: Wartość liczby: X n 2 n 2 n i ( ) = x 2 + x 2 + x 2 2 +... + x n 2 2 + x n 2 = xi 2 i= Używając n-bitów można zapisać liczbę z zakresu: n X( ) =, 2 Reprezentacja stałoprzecinkowa, bez znaku (język C) Typy zmiennych całkowitych bez znaku stosowane w języku C: Nazwa typu Rozmiar (bajty) Zakres wartości unsigned char bajt 255 unsigned short int 2 bajty 65 535 unsigned int 4 bajty 4 294 967 295 unsigned long int 4 bajty 4 294 967 295 #include <stdio.h> int main() { } unsigned char: unsigned short int: 2 unsigned int: 4 printf("unsigned char: %d\n",sizeof(unsigned unsigned char)); long int: 4 printf("unsigned short int: %d\n",sizeof(unsigned short int)); printf("unsigned int: %d\n",sizeof(unsigned int)); printf("unsigned long int: %d\n",sizeof(unsigned long int)); return ;

Rok akademicki 2/2, Wykład nr 3 45/53 Rok akademicki 2/2, Wykład nr 3 46/53 Reprezentacja stałoprzecinkowa, bez znaku (język C) Typ unsigned char ( bajt): Reprezentacja stałoprzecinkowa, bez znaku (język C) Typ unsigned short int (2 bajty): MSB (Most Significant Bit) - najbardziej znaczący bit, największa waga LSB (Least Significant Bit) - najmniej znaczący bit, najmniejsza waga Zakres wartości: dolna granica: (2) = () Zakres wartości: górna granica: (2) = 65 535 () dolna granica: (2) = () górna granica: (2) = 255 () Rok akademicki 2/2, Wykład nr 3 47/53 Rok akademicki 2/2, Wykład nr 3 48/53 Reprezentacja stałoprzecinkowa, bez znaku (język C) Typy unsigned int (4 bajty) i unsigned long int (4 bajty): Reprezentacja stałoprzecinkowa, ze znakiem (język C) Rozpatrzmy zapis liczby w systemie stałoprzecinkowym dwójkowym: Zakres wartości: dolna granica: (2) = () górna granica: (2) = 4 294 967 295 () SB (Sign Bit) - bit znaku, - liczba dodatnia, - liczba ujemna Wartość liczby: X () 2 n = x 2 + x 2 + x 2 +... + x 2 2 n 2 2 + x n ( 2 n ) Używając n-bitów można zapisać liczbę z zakresu: n n X( ) = 2, 2

Rok akademicki 2/2, Wykład nr 3 49/53 Rok akademicki 2/2, Wykład nr 3 5/53 Reprezentacja stałoprzecinkowa, ze znakiem (język C) Typy zmiennych całkowitych ze znakiem w języku C: Nazwa typu Rozmiar (bajty) Zakres wartości Reprezentacja stałoprzecinkowa, ze znakiem (język C) Typ char / signed char ( bajt): char signed char bajt -28 27 short signed short int 2 bajty -32 768 32 767 int signed int 4 bajty -2 47 483 648 2 47 483 647 long signed long int 4 bajty -2 47 483 648 2 47 483 647 #include <stdio.h> int main() { printf("char: %d\n",sizeof(char)); printf("short: %d\n",sizeof(short)); printf("int: %d\n",sizeof(int)); printf("long: %d\n",sizeof(long)); return ; } char: short: 2 int: 4 long: 4 Zakres wartości: dolna granica:. (2) = -28 () górna granica:. (2) = 27 () inne wartości:. (2) = - (). (2) = () Uwaga: kropka oznacza oddzielenie znaku liczby od jej wartości Rok akademicki 2/2, Wykład nr 3 5/53 Rok akademicki 2/2, Wykład nr 3 52/53 Reprezentacja stałoprzecinkowa, ze znakiem (język C) Typ short / signed short int (2 bajty): Reprezentacja stałoprzecinkowa, ze znakiem (język C) Typy int / signed int (4 bajty) i long / signed long int (4 bajty): 2 5 2 4 2 3 2 2 2 2 2 9 2 8 2 7 2 6 2 5 2 4 2 3 2 2 2 2 5 4 3 2 9 8 7 6 5 4 3 2 LSB Zakres wartości: dolna granica:. (2) = -32 768 () górna granica:. (2) = 32 767 () Zakres wartości: dolna granica:. (2) = -2 47 483 648 () górna granica:. (2) = 2 47 483 647 ()

Rok akademicki 2/2, Wykład nr 3 53/53 Koniec wykładu nr 3 Dziękuję za uwagę!