Serwis Edukacyjny
w I-LO w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

Autor artykułu: mgr Jerzy Wałaszek
Zmodyfikowano 30.01.2024

©2024 mgr Jerzy Wałaszek
I LO w Tarnowie

Matura - programowanie w C++

Kod znakowy ASCII

SPIS TREŚCI

Znaki

Współczesne komputery przetwarzają różne informacje. Wszystko sprowadza się do bitów, ponieważ bit jest bazową postacią informacji przetwarzanej przez komputer. Zatem jeśli określimy sposób przedstawienia danej informacji w postaci bitów, będziemy mogli ją przetwarzać przy pomocy komputerów. Pierwsze lekcje dotyczyły kodowania liczb całkowitych bez znaku (NBC) i ze znakiem (U2) oraz liczb zmiennoprzecinkowych (FP). Oprócz liczb na komputerach przetwarzane są równie często teksty. Wewnętrznie tekst jest ciągiem znaków, liter. Aby taki tekst przetwarzać na komputerze, musimy określić sposób kodowania znaków tekstu za pomocą bitów. Sposobów wymyślono wiele. Na nasze potrzeby zajmiemy się prostszym z nich, który nosi nazwę kodu ASCII (ang. American Standard Code for Information Interchange – Amerykański Standardowy Kod do Wymiany Informacji, czytaj aski). Kod ASCII powstał w połowie lat 60 ubiegłego wieku do kodowania tekstów angielskich. Standardowy kod ASCII jest 7-bitowy, co daje nam 27 =128 różnych słówek kodowych:
Kod NBC
  0
0000000
  1
0000001
  2
0000010
...
    ...
125
1111101
126
1111110
127
1111111

Jeśli kody ASCII zinterpretujemy jako liczby w kodzie NBC, to przyjmą one wartości od 0 do 127. Co nam to daje? Otóż bardzo wiele: komputery są maszynami matematycznymi, które potrafią przetwarzać liczby. Ponieważ kody ASCII są liczbami, to mogą być przetwarzane przez komputery jak inne liczby. Co więcej, liczby mogą być zapamiętywane w pamięci komputerowej, zatem komputer będzie mógł przechowywać znaki kodu ASCII w swojej pamięci.

Kod ASCII jest 7-bitowy, a komórka pamięci komputera jest 8-bitowa. Wynika z tego, iż jeden bit będzie niewykorzystywany:

NBC binarnie
  0
00000000
  1
00000001
  2
00000010
...
     ...
125
01111101
126
01111110
127
01111111

Początkowo nie miało to znaczenia, jednak później wraz z rozwojem komputerów postanowiono rozszerzyć standard ASCII do 8-bitów. W ten sposób otrzymano dodatkowe 128 kodów i powstał tzw. rozszerzony standard ASCII:

U2 NBC binarnie
   0
  0
00000000
   1
  1
00000001
   2
  2
00000010
 ...
...
     ...
 125
125
01111101
 126
126
01111110
 127
127
01111111
-128
128
10000000
-127
129
10000001
...
...
     ...
 -3
253
11111101
 -2
254
11111110
 -1
255
11111111

W efekcie kod ASCII otrzymał 28 = 256 słówek kodowych: 128 słówek standardowego kodu ASCII (kody NBS od 0 do 127) oraz drugie 128 słówek rozszerzonego kodu ASCII (kody NBS od 128 do 255 lub kody U2 od -1 do -128). Kody rozszerzone zostały wykorzystane do zakodowania dodatkowych znaków (np. znaki narodowe, litery greckie, symbole matematyczne, znaki do tworzenia tabelek oraz inne). Kody ASCII można również interpretować jako liczby ze znakiem U2. W takim przypadku kody podstawowe są dodatnie, a kody rozszerzone są ujemne (dlaczego?).

W języku C++ kod ASCII jest reprezentowany przez typ char (ang. character = znak). W pamięci komputera zmienna typu char zajmuje 1 bajt (8 bitów). Uruchom poniższy program:

// Znaki ASCII
//------------

#include <iostream>

using namespace std;

int main()
{
    cout << "char: " << sizeof(char)
    << "B" << endl << endl;

    return 0;
}
char: 1B

Zmienna typu char przechowuje jeden znak ASCII.

// Znaki ASCII
//------------

#include <iostream>

using namespace std;

int main()
{
    char a;
    a = 'A';
    cout << a << endl << endl;

    return 0;
}
A

Zwróć uwagę, iż w powyższym programie wpisaliśmy znak A do zmiennej a w apostrofach, a nie w cudzysłowach. Apostrofy oznaczają tutaj kod literki umieszczonej w nich. Cudzysłowy omówimy w dalszej części lekcji. Kod ten trafia do zmiennej a. Następnie wyświetlamy zawartość zmiennej. Ponieważ zmienna a ma typ char, to strumień cout interpretuje ją jako znak i wyświetla literę A. Gdybyśmy chcieli otrzymać kod tej literki (czyli liczbę), to stosujemy rzutowanie:

// Znaki ASCII
//------------

#include <iostream>

using namespace std;

int main()
{
    char a;
    a = 'A';
    cout << int(a) << endl << endl;

    return 0;
}
65

Do zapamiętania:


Na początek:  podrozdziału   strony 

Typ znakowy char

Kod ASCII koduje znaki za pomocą ośmiu bitów. Kody znaków mają wartości od 0 do 255, jeśli są interpretowane jako liczby NBS, lub od -128 do 127, jeśli są interpretowane jako liczby U2. W języku C++ typem danych dla kodu ASCII jest typ char. Jeśli interesują nas konkretne wartości kodów, to możemy stosować dwie odmiany typu char:

unsigned char – kody znaków interpretowane jako liczby NBS od 0 do 255. Kody podstawowe od 0 - 127, kody rozszerzone od 128 - 255

signed char – kody znaków interpretowane jako liczby U2 od -128 do 127. Kody podstawowe od 0 -127, kody rozszerzone od -1 do -128.

Jeśli zastosujemy sam typ char, to kody znaków będą interpretowane jako NBS lub U2 w zależności od ustawień kompilatora. Uruchom poniższy program:

// Znaki ASCII
//------------

#include <iostream>

using namespace std;

int main()
{
    unsigned char a = 'ą'; // NBC
    signed   char b = 'ą'; // U2
    char          c = 'ą'; // NBC lub U2
    cout << "unsigned char: kod 'ą' = " << (int) a << endl
         << "signed   char: kod 'ą' = " << (int) b << endl
         << "         char: kod 'ą' = " << (int) c
         << endl << endl;
    return 0;
}
unsigned char: kod 'ą' = 185
signed   char: kod 'ą' = -71
         char: kod 'ą' = -71

Program wyświetla kod literki ą w zależności od rodzaju typu char.  Literka ta należy do kodów rozszerzonych ASCII, dlatego przy interpretacji U2 otrzymujemy kod ujemny. Dodatkowo dostajesz informację o interpretacji typu char w twoim kompilatorze. Zapamiętaj ten wynik. Na przyszłość, jeśli kody rozszerzone ASCII będą istotne, to należy jawnie zastosować odpowiedni typ unsigned char (NBS) lub signed char (U2).

Do zapamiętania:


Na początek:  podrozdziału   strony 

Kody sterujące ASCII

Kod ASCII dzieli się na kilka sekcji o różnym znaczeniu. Opiszemy je krótko.

Znaki sterujące (ang. ASCII control characters)

Bitowo
b7
b6
b5
b4
b3
b2
b1
b0
0
0
0
x
x
x
x
x

Kody 0...31 posiadają specjalne znaczenie. Stosowano je dawniej do sterowania zewnętrznymi drukarkami. Dzisiaj z tych kodów wciąż używane są:

Kod 0: 00000000 – NUL, stosowany do oznaczania końca tekstu:
// Znak NUL
//------------

#include <iostream>

using namespace std;

int main()
{
    cout << "ABC\0abcdefghijkl";
         << "1234" << endl;
    return 0;
}
ABC1234

Program wyświetla dwa łańcuchy tekstowe: "ABC\0abcdefghijkl" oraz "1234". W pierwszym łańcuchu za literami ABC został wstawiony znak NUL - robi się to przy pomocy znaku pomocniczego \, za którym umieszczamy kod znaku zapisany w systemie ósemkowym. U nas \0 oznacza kod 0, czyli znak NUL. Gdy strumień cout napotka w tekście kod NUL, to przyjmuje, że tekst się w tym miejscu zakończył i dalsze znaki nie zostaną już wyświetlone. Dlatego drugi tekst został wyświetlony za literami ABC.


Kod 7: 00000111 – BEL, dzwonek. Znak generuje krótki sygnał dźwiękowy, dawniej drukarka po otrzymaniu kodu BEL uruchamiała dzwonek, aby zwrócić na coś uwagę operatora.

// Znak BEL
//------------

#include <iostream>

using namespace std;

int main()
{
    cout << "\7" << endl;
    return 0;
}
// Znak BEL
//------------

#include <iostream>

using namespace std;

int main()
{
    cout << "\a" << endl;
    return 0;
}

W tekście umieszczamy kod ósemkowy \7 lub symbolicznie \a.


Kod 8: 00001000 – BS, backspace, cofnięcie pozycji wydruku o jeden znak wstecz. Znak BS nie wymazuje wyświetlonych już znaków. Cofa jedynie pozycję wydruku, czyli miejsce, od którego komputer wyświetli następne znaki przesłane do strumienia cout.

// Znak BS - back space
//---------------------

#include <iostream>

using namespace std;

int main()
{
    cout << "ALO\10A" << endl;
    return 0;
}
// Znak BS - back space
//---------------------

#include <iostream>

using namespace std;

int main()
{
    cout << "ALO\bA" << endl;
    return 0;
}
ALA

W tekście za literą O wstawiliśmy znak BS. Przy wydruku spowoduje to nadpisanie litery O literą A (ponieważ pozycja wydruku została cofnięta o jeden znak w lewo, czyli na pozycję litery O) i zamiast ALO otrzymamy ALA. Znak BS uzyskujemy przy pomocy kodu ósemkowego \10 lub symbolicznie \b.


Kod 9: 00001001 – HT, horizontal tab, ustawienie wydruku na pozycji następnej tabulacji. Tabulacje rozmieszczone są w wierszu w tych samych kolumnach co osiem znaków. Pozwala to na drukowanie np. tabel.

// Znak HT - horizontal tab
//-------------------------

#include <iostream>

using namespace std;

int main()
{
    cout << "A\11B\tC\11D" << endl
         << "ABC\tDEF\tGHI\tJKL" << endl
         << "ABCDEF\11GHIJKL\tMNOPQR\11STUVWX"
         << endl << endl;
    return 0;
}
A       B       C       D
ABC     DEF     GHI     JKL
ABCDEF  GHIJKL  MNOPQR  STUVWX

Znak HT uzyskujemy kodem ósemkowym \11 lub symbolicznie \t.


Kod 10: 00001010 – LF, line feed, dawniej znak ten powodował na drukarce przesunięcie pionowe papieru o jeden wiersz, co umożliwiało rozpoczęcie druku następnego. Dzisiaj zwykle oznacza on przesunięcie pozycji wydruku na początek nowego wiersza. W C ++ oznacza to samo, co manipulator endl.

// Znak LF - line feed
//--------------------

#include <iostream>

using namespace std;

int main()
{
    cout << "ABC\12DEF\nGHI" << endl << endl;
    return 0;
}
ABC
DEF
GHI

Znak LF uzyskujemy kodem ósemkowym \12 lub symbolicznie \n.


Kod 13: 00001101 – CR, carriage return, znak powoduje powrót pozycji wydruku na początek wiersza. Dawniej znak był stosowany wraz z LF, co powodowało wysunięcie papieru o jeden wiersz i ustawienie głowicy drukującej na początku nowego wiersza.

// Znak CR - carriage return
//--------------------------

#include <iostream>

using namespace std;

int main()
{
    cout << "ABCDEF\15GHI\rJK" << endl << endl;
    return 0;
}
JKIDEF

Program wypisuje w tym samym wierszu trzy teksty, ponieważ przed dwoma ostatnimi wstawiono kod CR, to wynikiem jest jeden tekst z nadpisanymi znakami. Znak CR uzyskujemy kodem ósemkowym \15 lub symbolicznie \r.

Pozostałe znaki w konsoli powodują wyświetlenie znaków graficznych, które czasem mogą być przydatne. Poniższy program wyświetla wszystkie znaki kontrolne ASCII:

// Znaki kontrolne ASCII
//----------------------

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
    for(int i = 0; i < 32; i++)
    {

        cout << "kod: "
             << setw(2) << i
             << " Znak: ";
        switch(i)
        {
            case  0: cout << "NUL";   break;
            case  7: cout << "BEL";   break;
            case  8: cout << "BS";    break;
            case  9: cout << "HT";    break;
            case 10: cout << "LF";    break;
            case 13: cout << "CR";    break;
            default: cout << char(i); break;
        }
        cout << endl;
    }

    cout << endl;

    return 0;
}
kod:  0 Znak: NUL
kod:  1 Znak: ☺
kod:  2 Znak: ☻
kod:  3 Znak: ♥
kod:  4 Znak: ♦
kod:  5 Znak: ♣
kod:  6 Znak: ♠
kod:  7 Znak: BEL
kod:  8 Znak: BS
kod:  9 Znak: HT
kod: 10 Znak: LF
kod: 11 Znak: ♂
kod: 12 Znak: ♀
kod: 13 Znak: CR
kod: 14 Znak: ♫
kod: 15 Znak: ☼
kod: 16 Znak: ►
kod: 17 Znak: ◄
kod: 18 Znak: ↕
kod: 19 Znak: ‼
kod: 20 Znak: ¶
kod: 21 Znak: §
kod: 22 Znak: ▬
kod: 23 Znak: ↨
kod: 24 Znak: ↑
kod: 25 Znak: ↓
kod: 26 Znak: →
kod: 27 Znak: ←
kod: 28 Znak: ∟
kod: 29 Znak: ↔
kod: 30 Znak: ▲
kod: 31 Znak: ▼

W programie użyliśmy nowej instrukcji switch, która przydaje się, gdy należy podjąć różne działania w zależności od wartości wybranego wyrażenia. Składnia jest następująca:

switch(wyrażenie)
{
    case stała_1: instrukcje;
    case stała_2: instrukcje;
     ...
    default: instrukcje;
}

Działanie instrukcji:

Komputer oblicza wartość wyrażenia. Jeśli jedna ze stałych za case ma wartość równą wartości wyrażenia, to komputer wykonuje instrukcje zawarte w tej sekcji case. Jeśli ostatnią z tych instrukcji jest break, to komputer kończy wykonanie switch. Jeśli nie ma instrukcji break, to następuje przejście do instrukcji w kolejnej sekcji case (czasem jest to pożądane, gdy chcemy wykonać te same operacje dla kilku wartości wyrażenia). Jeśli wartość wyrażenia nie odpowiada żadnej ze stałych za case, to komputer wykona instrukcje w sekcji default:. Przyjrzyjmy się, jak to działa w naszym programie:

for(int i = 0; i < 32; i++)
{
  Rozpoczynamy pętlę, która wykona 32 obiegi
z wartościami i od 0 do 31.
Wartości te odpowiadają kodom sterującym ASCII.
cout << "kod: "
         << setw(2) << i
         << " Znak: ";
  Wyświetlamy wartość kodu znaku sterującego.
switch(i)
  Rozpoczynamy instrukcję switch.
Sprawdzany w niej będzie kod wyświetlanego znaku.
{
case  0: cout << "NUL";   break;
case  7: cout << "BEL";   break;
case  8: cout << "BS";    break;
case  9: cout << "HT";    break;
case 10: cout << "LF";    break;
case 13: cout << "CR";    break;
  Ponieważ niektóre kody sterujące wykonują działania
w oknie konsoli i nie są znakami drukowalnymi,
musimy je wyłapać. To właśnie robi tutaj
instrukcja switch. Jeśli kod znaku jest równy jednej
ze stałych za case, to do strumienia cout trafi
nazwa kodu, a nie znak sterujący, który by zaburzył
wyświetlaną treść. Zwróć uwagę, iż po przesłaniu
do strumienia nazwy kodu pojawia się instrukcja
break, która kończy działanie switch. Bez niej komputer
przeszedłby do wykonywania instrukcji w następnym
bloku case.
default: cout << char(i); break;
}
  Jeśli kod znaku nie jest równy żadnej ze stałych za case,
to nastąpi wykonanie instrukcji w sekcji default:.
W tym wypadku kod sterujący nie wykonuje działania
i jest normalnym znakiem, który przekazujemy
do strumienia cout. Musimy wykonać rzutowanie na
typ char, aby strumień zinterpretował wartość
zmiennej i jako znak, a nie liczbę.
cout << endl;
}
  Po wyjściu z instrukcji switch przesyłamy do strumienia
manipulator endl, aby zakończyć bieżący wiersz

Do zapamiętania:


Na początek:  podrozdziału   strony 

Cyfry i znaki pisarskie

Następna sekcja kodów ASCII od 32 do 63 (001xxxxx) obejmuje różne znaki pisarskie oraz cyfry. Znak o kodzie 32 tworzy spację, czyli puste miejsce. Poniższy program wyświetla kody i znaki z tej sekcji.
// Znaki pisarskie i cyfry
//------------------------

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
    for(int i = 32; i < 64; i++)
    {

        cout << "kod: "
             << setw(2) << i
             << " Znak: ";
        if(i == 32) cout << "SP";
        else        cout << char(i);
        cout << endl;
    }

    cout << endl;

    return 0;
}
kod: 32 Znak: SP
kod: 33 Znak: !
kod: 34 Znak: "
kod: 35 Znak: #
kod: 36 Znak: $
kod: 37 Znak: %
kod: 38 Znak: &
kod: 39 Znak: '
kod: 40 Znak: (
kod: 41 Znak: )
kod: 42 Znak: *
kod: 43 Znak: +
kod: 44 Znak: ,
kod: 45 Znak: -
kod: 46 Znak: .
kod: 47 Znak: /
kod: 48 Znak: 0
kod: 49 Znak: 1
kod: 50 Znak: 2
kod: 51 Znak: 3
kod: 52 Znak: 4
kod: 53 Znak: 5
kod: 54 Znak: 6
kod: 55 Znak: 7
kod: 56 Znak: 8
kod: 57 Znak: 9
kod: 58 Znak: :
kod: 59 Znak: ;
kod: 60 Znak: <
kod: 61 Znak: =
kod: 62 Znak: >
kod: 63 Znak: ?

W skład tej sekcji wchodzą znaki cyfr, których używamy do zapisu liczb. Poniższy program wyświetla kody cyfr szesnastkowo, ósemkowo i dziesiętnie:

// Znaki cyfr
//-----------

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
    for(int i = 48; i < 58; i++)
        cout << "Cyfra " << char(i) << " : "
             << hex << "0x" << i << " : "
             << oct << "0"  << i << " : "
             << dec << i << endl;

    cout << endl;

    return 0;
}
Cyfra 0 : 0x30 : 060 : 48
Cyfra 1 : 0x31 : 061 : 49
Cyfra 2 : 0x32 : 062 : 50
Cyfra 3 : 0x33 : 063 : 51
Cyfra 4 : 0x34 : 064 : 52
Cyfra 5 : 0x35 : 065 : 53
Cyfra 6 : 0x36 : 066 : 54
Cyfra 7 : 0x37 : 067 : 55
Cyfra 8 : 0x38 : 070 : 56
Cyfra 9 : 0x39 : 071 : 57

Manipulatory hex (szesnastkowo), oct (ósemkowo) i dec (dziesiętnie) ustawiają sposób wyświetlania liczb w strumieniu cout. Dzięki nim nie musimy przeliczać wartości. Kody dwójkowe cyfr są następujące:

Cyfra Kod cyfry
 0
00110000
 1
00110001
 2
00110010
 3
00110011
 4
00110100
 5
00110101
 6
00110110
 7
00110111
 8
00111000
 9
00111001

Zwróć uwagę, iż kody ASCII cyfr łatwo przerobić na wartości cyfr – wystarczy w kodzie ASCII wyzerować pierwsze cztery bity. Arytmetycznie odpowiada to odjęciu od kodu ASCII cyfry liczby 48 (001100002 = 4810). Również przetworzenie wartości cyfry na jej kod ASCII odpowiada dodaniu do jej wartości liczby 48:

Wartość cyfry = kod ASCII cyfry - 48
Kod ASCII cyfry = wartość cyfry + 48

Do zapamiętania:


Na początek:  podrozdziału   strony 

Litery

Znaki liter są ułożone alfabetycznie w dwóch kolejnych sekcjach o kodach 64...95 (010xxxxx) i 96...127 ( 011xxxxx). W pierwszej sekcji są duże litery A...Z, w drugiej sekcji są małe litery a...z. Kilka pozostałych kodów (sekcja obejmuje 32 kody, a liter jest 26) wykorzystują dodatkowe symbole. Kod 127 ma specjalne znaczenie - jest to znak DEL. W oknie konsoli Windows jest on jednak normalnie drukowalny (w Linuxie znak DEL nie pojawia się na wydruku) . Poniższy program wyświetla wszystkie znaki z obu sekcji:
// Znaki liter
//------------

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
    for(int i = 64; i < 96; i++)
    {
      cout << "Znak: " << char(i) << " kod: " << i;
      cout << "    Znak: ";
      if(i + 32 == 127) cout << "DEL";
      else              cout << char(i + 32);
      cout << " kod: " << setw(3) << i + 32 << endl;
    }

    cout << endl;

    return 0;
}
Znak: @ kod: 64    Znak: ` kod:  96
Znak: A kod: 65    Znak: a kod:  97
Znak: B kod: 66    Znak: b kod:  98
Znak: C kod: 67    Znak: c kod:  99
Znak: D kod: 68    Znak: d kod: 100
Znak: E kod: 69    Znak: e kod: 101
Znak: F kod: 70    Znak: f kod: 102
Znak: G kod: 71    Znak: g kod: 103
Znak: H kod: 72    Znak: h kod: 104
Znak: I kod: 73    Znak: i kod: 105
Znak: J kod: 74    Znak: j kod: 106
Znak: K kod: 75    Znak: k kod: 107
Znak: L kod: 76    Znak: l kod: 108
Znak: M kod: 77    Znak: m kod: 109
Znak: N kod: 78    Znak: n kod: 110
Znak: O kod: 79    Znak: o kod: 111
Znak: P kod: 80    Znak: p kod: 112
Znak: Q kod: 81    Znak: q kod: 113
Znak: R kod: 82    Znak: r kod: 114
Znak: S kod: 83    Znak: s kod: 115
Znak: T kod: 84    Znak: t kod: 116
Znak: U kod: 85    Znak: u kod: 117
Znak: V kod: 86    Znak: v kod: 118
Znak: W kod: 87    Znak: w kod: 119
Znak: X kod: 88    Znak: x kod: 120
Znak: Y kod: 89    Znak: y kod: 121
Znak: Z kod: 90    Znak: z kod: 122
Znak: [ kod: 91    Znak: { kod: 123
Znak: \ kod: 92    Znak: | kod: 124
Znak: ] kod: 93    Znak: } kod: 125
Znak: ^ kod: 94    Znak: ~ kod: 126
Znak: _ kod: 95    Znak: DEL kod: 127

Zwróć uwagę, iż kody ASCII małych liter są zawsze o 32 większe od kodów odpowiadających im dużych liter. Wynika stąd prosty sposób wymiany liter dużych i małych:

kod ASCII małej litery = kod ASCII dużej litery + 32
kod ASCII dużej litery = kod ASCII małej litery - 32

Podsumujmy podstawowe kody ASCII:

0...31
000xxxxx
kody sterujące
32...63
001xxxxx
znaki pisarskie
48...56
0011xxxx
cyfry
64...95
010xxxxx
duże litery
96...127
011xxxxx
małe litery

Wybrane kody ASCII (nie musisz się ich uczyć na pamięć, ale w programowaniu zawsze warto je mieć pod ręką):

Kod Dwójkowo Znak
  0:
00000000
NUL
  7:
00000111
BEL
  8:
00001000
BS
  9:
00001001
HT
 10:
00001010
LF
 13:
00001101
CR
 32:
00100000
SP
 48:
00110000
Cyfra 0
 57:
00111001
Cyfra 9
 65:
01000001
Litera A
 90:
01011010
Litera Z
 97:
01100001
Litera a
122:
01111010
Litera z
127:
01111111
DEL

Do zapamiętania:


Na początek:  podrozdziału   strony 

Rozszerzony kod ASCII

Podstawowy kod ASCII jest 7-bitowy, co daje nam zakres kodów od 0 do 127 (dwójkowo: 00000000 ... 01111111). Te kody są zawsze niezmienne. Jeśli ustawimy na 1 najstarszy bit, to otrzymamy kody od 128 do 256 (w interpretacji NBS) lub  od -128 do -1 (w interpretacji U2): dwójkowo od 10000000 do 11111111. Kody te wykorzystano do dodatkowych znaków. Ponieważ komputery IBM rozprzestrzeniły się do wszystkich krajów na naszej planecie, szybko okazało się, iż dodatkowe kody nie pokrywają znaków narodowych. Dlatego wymyślono tzw. strony kodowe ASCII (ang. ASCII code pages). Każda z tych stron kodowych definiuje specyficzne znaki narodowe w obszarze kodów rozszerzonych ASCII. Zmieniając stronę kodową powodujemy, iż kody rozszerzone odnoszą się do innych znaków.  W polskim Windows konsola znakowa pracuje w standardzie tzw. LATIN-2, a jej strona kodowa ma oznaczenie CP-852. Gdy użyjesz funkcji setlocale(LC_ALL,""), to konsola przełączy się na stronę kodową CP-1250, co spowoduje, iż kody rozszerzone będą odpowiadały kodom znaków w Windows (kody podstawowe 0...127 pozostają bez zmian). Poniższy program wyświetla kody rozszerzone ASCII w kodowaniu LATIN-2. Wartości kodów są wyświetlane kolejno jako dziesiętne, szesnastkowe i ósemkowe.
// Kody rozszerzone ASCII
//  Strona kodowa CP-852
//-----------------------

#include <iostream>

using namespace std;

int main()
{
    for(int i = 128; i < 256; i++)
        cout << "Znak: " << char(i)
             << " kod: " << dec << i
             << "  " << hex << "0x" << i
             << "  " << oct << "0"  << i
             << endl;

    cout << endl;

    return 0;
}
Znak: Ç kod: 128 0x80 0200
Znak: ü kod: 129 0x81 0201
Znak: é kod: 130 0x82 0202
Znak: â kod: 131 0x83 0203
Znak: ä kod: 132 0x84 0204
Znak: ů kod: 133 0x85 0205
Znak: ć kod: 134 0x86 0206
Znak: ç kod: 135 0x87 0207
Znak: ł kod: 136 0x88 0210
Znak: ë kod: 137 0x89 0211
Znak: Ő kod: 138 0x8a 0212
Znak: ő kod: 139 0x8b 0213
Znak: î kod: 140 0x8c 0214
Znak: Ź kod: 141 0x8d 0215
Znak: Ä kod: 142 0x8e 0216
Znak: Ć kod: 143 0x8f 0217
Znak: É kod: 144 0x90 0220
Znak: Ĺ kod: 145 0x91 0221
Znak: ĺ kod: 146 0x92 0222
Znak: ô kod: 147 0x93 0223
Znak: ö kod: 148 0x94 0224
Znak: Ľ kod: 149 0x95 0225
Znak: ľ kod: 150 0x96 0226
Znak: Ś kod: 151 0x97 0227
Znak: ś kod: 152 0x98 0230
Znak: Ö kod: 153 0x99 0231
Znak: Ü kod: 154 0x9a 0232
Znak: Ť kod: 155 0x9b 0233
Znak: ť kod: 156 0x9c 0234
Znak: Ł kod: 157 0x9d 0235
Znak: × kod: 158 0x9e 0236
Znak: č kod: 159 0x9f 0237
Znak: á kod: 160 0xa0 0240
Znak: í kod: 161 0xa1 0241
Znak: ó kod: 162 0xa2 0242
Znak: ú kod: 163 0xa3 0243
Znak: Ą kod: 164 0xa4 0244
Znak: ą kod: 165 0xa5 0245
Znak: Ž kod: 166 0xa6 0246
Znak: ž kod: 167 0xa7 0247
Znak: Ę kod: 168 0xa8 0250
Znak: ę kod: 169 0xa9 0251
Znak: ¬ kod: 170 0xaa 0252
Znak: ź kod: 171 0xab 0253
Znak: Č kod: 172 0xac 0254
Znak: ş kod: 173 0xad 0255
Znak: « kod: 174 0xae 0256
Znak: » kod: 175 0xaf 0257
Znak: ░ kod: 176 0xb0 0260
Znak: ▒ kod: 177 0xb1 0261
Znak: ▓ kod: 178 0xb2 0262
Znak: │ kod: 179 0xb3 0263
Znak: ┤ kod: 180 0xb4 0264
Znak: Á kod: 181 0xb5 0265
Znak: Â kod: 182 0xb6 0266
Znak: Ě kod: 183 0xb7 0267
Znak: Ş kod: 184 0xb8 0270
Znak: ╣ kod: 185 0xb9 0271
Znak: ║ kod: 186 0xba 0272
Znak: ╗ kod: 187 0xbb 0273
Znak: ╝ kod: 188 0xbc 0274
Znak: Ż kod: 189 0xbd 0275
Znak: ż kod: 190 0xbe 0276
Znak: ┐ kod: 191 0xbf 0277
Znak: └ kod: 192 0xc0 0300
Znak: ┴ kod: 193 0xc1 0301
Znak: ┬ kod: 194 0xc2 0302
Znak: ├ kod: 195 0xc3 0303
Znak: ─ kod: 196 0xc4 0304
Znak: ┼ kod: 197 0xc5 0305
Znak: Ă kod: 198 0xc6 0306
Znak: ă kod: 199 0xc7 0307
Znak: ╚ kod: 200 0xc8 0310
Znak: ╔ kod: 201 0xc9 0311
Znak: ╩ kod: 202 0xca 0312
Znak: ╦ kod: 203 0xcb 0313
Znak: ╠ kod: 204 0xcc 0314
Znak: ═ kod: 205 0xcd 0315
Znak: ╬ kod: 206 0xce 0316
Znak: ¤ kod: 207 0xcf 0317
Znak: đ kod: 208 0xd0 0320
Znak: Đ kod: 209 0xd1 0321
Znak: Ď kod: 210 0xd2 0322
Znak: Ë kod: 211 0xd3 0323
Znak: ď kod: 212 0xd4 0324
Znak: Ň kod: 213 0xd5 0325
Znak: Í kod: 214 0xd6 0326
Znak: Î kod: 215 0xd7 0327
Znak: ě kod: 216 0xd8 0330
Znak: ┘ kod: 217 0xd9 0331
Znak: ┌ kod: 218 0xda 0332
Znak: █ kod: 219 0xdb 0333
Znak: ▄ kod: 220 0xdc 0334
Znak: Ţ kod: 221 0xdd 0335
Znak: Ů kod: 222 0xde 0336
Znak: ▀ kod: 223 0xdf 0337
Znak: Ó kod: 224 0xe0 0340
Znak: ß kod: 225 0xe1 0341
Znak: Ô kod: 226 0xe2 0342
Znak: Ń kod: 227 0xe3 0343
Znak: ń kod: 228 0xe4 0344
Znak: ň kod: 229 0xe5 0345
Znak: Š kod: 230 0xe6 0346
Znak: š kod: 231 0xe7 0347
Znak: Ŕ kod: 232 0xe8 0350
Znak: Ú kod: 233 0xe9 0351
Znak: ŕ kod: 234 0xea 0352
Znak: Ű kod: 235 0xeb 0353
Znak: ý kod: 236 0xec 0354
Znak: Ý kod: 237 0xed 0355
Znak: ţ kod: 238 0xee 0356
Znak: ´ kod: 239 0xef 0357
Znak: ­ kod: 240 0xf0 0360
Znak: ˝ kod: 241 0xf1 0361
Znak: ˛ kod: 242 0xf2 0362
Znak: ˇ kod: 243 0xf3 0363
Znak: ˘ kod: 244 0xf4 0364
Znak: § kod: 245 0xf5 0365
Znak: ÷ kod: 246 0xf6 0366
Znak: ¸ kod: 247 0xf7 0367
Znak: ° kod: 248 0xf8 0370
Znak: ¨ kod: 249 0xf9 0371
Znak: ˙ kod: 250 0xfa 0372
Znak: ű kod: 251 0xfb 0373
Znak: Ř kod: 252 0xfc 0374
Znak: ř kod: 253 0xfd 0375
Znak: ■ kod: 254 0xfe 0376
Znak:   kod: 255 0xff 0377

Kolejny program robi to samo, jednak najpierw przełącza w konsoli kodowanie LATIN-2 na CP-1250:

// Kody rozszerzone ASCII
//    Strona  CP-1250
//-----------------------

#include <iostream>

using namespace std;

int main()
{
    setlocale(LC_ALL,"");
    for(int i = 128; i < 256; i++)
        cout << "Znak: " << char(i)
             << " kod: " << dec << i
             << "  " << hex << "0x" << i
             << "  " << oct << "0"  << i
             << endl;

    cout << endl;

    return 0;
}
Znak: ? kod: 128 0x80 0200
Znak: ? kod: 129 0x81 0201
Znak: ' kod: 130 0x82 0202
Znak: ? kod: 131 0x83 0203
Znak: " kod: 132 0x84 0204
Znak: kod: 133 0x85 0205
Znak: ┼ kod: 134 0x86 0206
Znak: ┼ kod: 135 0x87 0207
Znak: ? kod: 136 0x88 0210
Znak: % kod: 137 0x89 0211
Znak: Š kod: 138 0x8a 0212
Znak: < kod: 139 0x8b 0213
Znak: Ś kod: 140 0x8c 0214
Znak: Ť kod: 141 0x8d 0215
Znak: Ž kod: 142 0x8e 0216
Znak: Ź kod: 143 0x8f 0217
Znak: ? kod: 144 0x90 0220
Znak: ' kod: 145 0x91 0221
Znak: ' kod: 146 0x92 0222
Znak: " kod: 147 0x93 0223
Znak: " kod: 148 0x94 0224
Znak: kod: 149 0x95 0225
Znak: - kod: 150 0x96 0226
Znak: - kod: 151 0x97 0227
Znak: ? kod: 152 0x98 0230
Znak: t kod: 153 0x99 0231
Znak: š kod: 154 0x9a 0232
Znak: > kod: 155 0x9b 0233
Znak: ś kod: 156 0x9c 0234
Znak: ť kod: 157 0x9d 0235
Znak: ž kod: 158 0x9e 0236
Znak: ź kod: 159 0x9f 0237
Znak:   kod: 160 0xa0 0240
Znak: ˇ kod: 161 0xa1 0241
Znak: ˘ kod: 162 0xa2 0242
Znak: Ł kod: 163 0xa3 0243
Znak: ¤ kod: 164 0xa4 0244
Znak: Ą kod: 165 0xa5 0245
Znak: | kod: 166 0xa6 0246
Znak: § kod: 167 0xa7 0247
Znak: ¨ kod: 168 0xa8 0250
Znak: c kod: 169 0xa9 0251
Znak: Ş kod: 170 0xaa 0252
Znak: « kod: 171 0xab 0253
Znak: ¬ kod: 172 0xac 0254
Znak: ­ kod: 173 0xad 0255
Znak: R kod: 174 0xae 0256
Znak: Ż kod: 175 0xaf 0257
Znak: ° kod: 176 0xb0 0260
Znak: + kod: 177 0xb1 0261
Znak: ˛ kod: 178 0xb2 0262
Znak: ł kod: 179 0xb3 0263
Znak: ´ kod: 180 0xb4 0264
Znak: u kod: 181 0xb5 0265
Znak: ¶ kod: 182 0xb6 0266
Znak: kod: 183 0xb7 0267
Znak: ¸ kod: 184 0xb8 0270
Znak: ą kod: 185 0xb9 0271
Znak: ş kod: 186 0xba 0272
Znak: » kod: 187 0xbb 0273
Znak: Ľ kod: 188 0xbc 0274
Znak: ˝ kod: 189 0xbd 0275
Znak: ľ kod: 190 0xbe 0276
Znak: ż kod: 191 0xbf 0277
Znak: Ŕ kod: 192 0xc0 0300
Znak: Á kod: 193 0xc1 0301
Znak: Â kod: 194 0xc2 0302
Znak: Ă kod: 195 0xc3 0303
Znak: Ä kod: 196 0xc4 0304
Znak: Ĺ kod: 197 0xc5 0305
Znak: Ć kod: 198 0xc6 0306
Znak: Ç kod: 199 0xc7 0307
Znak: Č kod: 200 0xc8 0310
Znak: É kod: 201 0xc9 0311
Znak: Ę kod: 202 0xca 0312
Znak: Ë kod: 203 0xcb 0313
Znak: Ě kod: 204 0xcc 0314
Znak: Í kod: 205 0xcd 0315
Znak: Î kod: 206 0xce 0316
Znak: Ď kod: 207 0xcf 0317
Znak: Đ kod: 208 0xd0 0320
Znak: Ń kod: 209 0xd1 0321
Znak: Ň kod: 210 0xd2 0322
Znak: Ó kod: 211 0xd3 0323
Znak: Ô kod: 212 0xd4 0324
Znak: Ő kod: 213 0xd5 0325
Znak: Ö kod: 214 0xd6 0326
Znak: × kod: 215 0xd7 0327
Znak: Ř kod: 216 0xd8 0330
Znak: Ů kod: 217 0xd9 0331
Znak: Ú kod: 218 0xda 0332
Znak: Ű kod: 219 0xdb 0333
Znak: Ü kod: 220 0xdc 0334
Znak: Ý kod: 221 0xdd 0335
Znak: Ţ kod: 222 0xde 0336
Znak: ß kod: 223 0xdf 0337
Znak: ŕ kod: 224 0xe0 0340
Znak: á kod: 225 0xe1 0341
Znak: â kod: 226 0xe2 0342
Znak: ă kod: 227 0xe3 0343
Znak: ä kod: 228 0xe4 0344
Znak: ĺ kod: 229 0xe5 0345
Znak: ć kod: 230 0xe6 0346
Znak: ç kod: 231 0xe7 0347
Znak: č kod: 232 0xe8 0350
Znak: é kod: 233 0xe9 0351
Znak: ę kod: 234 0xea 0352
Znak: ë kod: 235 0xeb 0353
Znak: ě kod: 236 0xec 0354
Znak: í kod: 237 0xed 0355
Znak: î kod: 238 0xee 0356
Znak: ď kod: 239 0xef 0357
Znak: đ kod: 240 0xf0 0360
Znak: ń kod: 241 0xf1 0361
Znak: ň kod: 242 0xf2 0362
Znak: ó kod: 243 0xf3 0363
Znak: ô kod: 244 0xf4 0364
Znak: ő kod: 245 0xf5 0365
Znak: ö kod: 246 0xf6 0366
Znak: ÷ kod: 247 0xf7 0367
Znak: ř kod: 248 0xf8 0370
Znak: ů kod: 249 0xf9 0371
Znak: ú kod: 250 0xfa 0372
Znak: ű kod: 251 0xfb 0373
Znak: ü kod: 252 0xfc 0374
Znak: ý kod: 253 0xfd 0375
Znak: ţ kod: 254 0xfe 0376
Znak: ˙ kod: 255 0xff 0377

Jeśli porównamy wyniki pracy obu programów, to okaże się, iż kody polskich literek w obu kodach są inne. Zaznaczyliśmy je kolorem zielonym.

Niektóre kody w kodowaniu CP-1250 dają puste znaki, co zaburza wydruk. Zaznaczyliśmy je kolorem czerwonym.

LATIN-2

Znak: Ç kod: 128 0x80 0200
Znak: ü kod: 129 0x81 0201
Znak: é kod: 130 0x82 0202
Znak: â kod: 131 0x83 0203
Znak: ä kod: 132 0x84 0204
Znak: ů kod: 133 0x85 0205
Znak: ć kod: 134 0x86 0206
Znak: ç kod: 135 0x87 0207
Znak: ł kod: 136 0x88 0210
Znak: ë kod: 137 0x89 0211
Znak: Ő kod: 138 0x8a 0212
Znak: ő kod: 139 0x8b 0213
Znak: î kod: 140 0x8c 0214
Znak: Ź kod: 141 0x8d 0215
Znak: Ä kod: 142 0x8e 0216
Znak: Ć kod: 143 0x8f 0217
Znak: É kod: 144 0x90 0220
Znak: Ĺ kod: 145 0x91 0221
Znak: ĺ kod: 146 0x92 0222
Znak: ô kod: 147 0x93 0223
Znak: ö kod: 148 0x94 0224
Znak: Ľ kod: 149 0x95 0225
Znak: ľ kod: 150 0x96 0226
Znak: Ś kod: 151 0x97 0227
Znak: ś kod: 152 0x98 0230
Znak: Ö kod: 153 0x99 0231
Znak: Ü kod: 154 0x9a 0232
Znak: Ť kod: 155 0x9b 0233
Znak: ť kod: 156 0x9c 0234
Znak: Ł kod: 157 0x9d 0235
Znak: × kod: 158 0x9e 0236
Znak: č kod: 159 0x9f 0237
Znak: á kod: 160 0xa0 0240
Znak: í kod: 161 0xa1 0241
Znak: ó kod: 162 0xa2 0242
Znak: ú kod: 163 0xa3 0243
Znak: Ą kod: 164 0xa4 0244
Znak: ą kod: 165 0xa5 0245
Znak: Ž kod: 166 0xa6 0246
Znak: ž kod: 167 0xa7 0247
Znak: Ę kod: 168 0xa8 0250
Znak: ę kod: 169 0xa9 0251
Znak: ¬ kod: 170 0xaa 0252
Znak: ź kod: 171 0xab 0253
Znak: Č kod: 172 0xac 0254
Znak: ş kod: 173 0xad 0255
Znak: « kod: 174 0xae 0256
Znak: » kod: 175 0xaf 0257
Znak: ░ kod: 176 0xb0 0260
Znak: ▒ kod: 177 0xb1 0261
Znak: ▓ kod: 178 0xb2 0262
Znak: │ kod: 179 0xb3 0263
Znak: ┤ kod: 180 0xb4 0264
Znak: Á kod: 181 0xb5 0265
Znak: Â kod: 182 0xb6 0266
Znak: Ě kod: 183 0xb7 0267
Znak: Ş kod: 184 0xb8 0270
Znak: ╣ kod: 185 0xb9 0271
Znak: ║ kod: 186 0xba 0272
Znak: ╗ kod: 187 0xbb 0273
Znak: ╝ kod: 188 0xbc 0274
Znak: Ż kod: 189 0xbd 0275
Znak: ż kod: 190 0xbe 0276
Znak: ┐ kod: 191 0xbf 0277
Znak: └ kod: 192 0xc0 0300
Znak: ┴ kod: 193 0xc1 0301
Znak: ┬ kod: 194 0xc2 0302
Znak: ├ kod: 195 0xc3 0303
Znak: ─ kod: 196 0xc4 0304
Znak: ┼ kod: 197 0xc5 0305
Znak: Ă kod: 198 0xc6 0306
Znak: ă kod: 199 0xc7 0307
Znak: ╚ kod: 200 0xc8 0310
Znak: ╔ kod: 201 0xc9 0311
Znak: ╩ kod: 202 0xca 0312
Znak: ╦ kod: 203 0xcb 0313
Znak: ╠ kod: 204 0xcc 0314
Znak: ═ kod: 205 0xcd 0315
Znak: ╬ kod: 206 0xce 0316
Znak: ¤ kod: 207 0xcf 0317
Znak: đ kod: 208 0xd0 0320
Znak: Đ kod: 209 0xd1 0321
Znak: Ď kod: 210 0xd2 0322
Znak: Ë kod: 211 0xd3 0323
Znak: ď kod: 212 0xd4 0324
Znak: Ň kod: 213 0xd5 0325
Znak: Í kod: 214 0xd6 0326
Znak: Î kod: 215 0xd7 0327
Znak: ě kod: 216 0xd8 0330
Znak: ┘ kod: 217 0xd9 0331
Znak: ┌ kod: 218 0xda 0332
Znak: █ kod: 219 0xdb 0333
Znak: ▄ kod: 220 0xdc 0334
Znak: Ţ kod: 221 0xdd 0335
Znak: Ů kod: 222 0xde 0336
Znak: ▀ kod: 223 0xdf 0337
Znak: Ó kod: 224 0xe0 0340
Znak: ß kod: 225 0xe1 0341
Znak: Ô kod: 226 0xe2 0342
Znak: Ń kod: 227 0xe3 0343
Znak: ń kod: 228 0xe4 0344
Znak: ň kod: 229 0xe5 0345
Znak: Š kod: 230 0xe6 0346
Znak: š kod: 231 0xe7 0347
Znak: Ŕ kod: 232 0xe8 0350
Znak: Ú kod: 233 0xe9 0351
Znak: ŕ kod: 234 0xea 0352
Znak: Ű kod: 235 0xeb 0353
Znak: ý kod: 236 0xec 0354
Znak: Ý kod: 237 0xed 0355
Znak: ţ kod: 238 0xee 0356
Znak: ´ kod: 239 0xef 0357
Znak: ­ kod: 240 0xf0 0360
Znak: ˝ kod: 241 0xf1 0361
Znak: ˛ kod: 242 0xf2 0362
Znak: ˇ kod: 243 0xf3 0363
Znak: ˘ kod: 244 0xf4 0364
Znak: § kod: 245 0xf5 0365
Znak: ÷ kod: 246 0xf6 0366
Znak: ¸ kod: 247 0xf7 0367
Znak: ° kod: 248 0xf8 0370
Znak: ¨ kod: 249 0xf9 0371
Znak: ˙ kod: 250 0xfa 0372
Znak: ű kod: 251 0xfb 0373
Znak: Ř kod: 252 0xfc 0374
Znak: ř kod: 253 0xfd 0375
Znak: ■ kod: 254 0xfe 0376
Znak:   kod: 255 0xff 0377
CP-1250
Znak: ? kod: 128 0x80 0200
Znak: ? kod: 129 0x81 0201
Znak: ' kod: 130 0x82 0202
Znak: ? kod: 131 0x83 0203
Znak: " kod: 132 0x84 0204
Znak: kod: 133 0x85 0205
Znak: ┼ kod: 134 0x86 0206
Znak: ┼ kod: 135 0x87 0207
Znak: ? kod: 136 0x88 0210
Znak: % kod: 137 0x89 0211
Znak: Š kod: 138 0x8a 0212
Znak: < kod: 139 0x8b 0213
Znak: Ś kod: 140 0x8c 0214
Znak: Ť kod: 141 0x8d 0215
Znak: Ž kod: 142 0x8e 0216
Znak: Ź kod: 143 0x8f 0217
Znak: ? kod: 144 0x90 0220
Znak: ' kod: 145 0x91 0221
Znak: ' kod: 146 0x92 0222
Znak: " kod: 147 0x93 0223
Znak: " kod: 148 0x94 0224
Znak: kod: 149 0x95 0225
Znak: - kod: 150 0x96 0226
Znak: - kod: 151 0x97 0227
Znak: ? kod: 152 0x98 0230
Znak: t kod: 153 0x99 0231
Znak: š kod: 154 0x9a 0232
Znak: > kod: 155 0x9b 0233
Znak: ś kod: 156 0x9c 0234
Znak: ť kod: 157 0x9d 0235
Znak: ž kod: 158 0x9e 0236
Znak: ź kod: 159 0x9f 0237
Znak:   kod: 160 0xa0 0240
Znak: ˇ kod: 161 0xa1 0241
Znak: ˘ kod: 162 0xa2 0242
Znak: Ł kod: 163 0xa3 0243
Znak: ¤ kod: 164 0xa4 0244
Znak: Ą kod: 165 0xa5 0245
Znak: | kod: 166 0xa6 0246
Znak: § kod: 167 0xa7 0247
Znak: ¨ kod: 168 0xa8 0250
Znak: c kod: 169 0xa9 0251
Znak: Ş kod: 170 0xaa 0252
Znak: « kod: 171 0xab 0253
Znak: ¬ kod: 172 0xac 0254
Znak: ­ kod: 173 0xad 0255
Znak: R kod: 174 0xae 0256
Znak: Ż kod: 175 0xaf 0257
Znak: ° kod: 176 0xb0 0260
Znak: + kod: 177 0xb1 0261
Znak: ˛ kod: 178 0xb2 0262
Znak: ł kod: 179 0xb3 0263
Znak: ´ kod: 180 0xb4 0264
Znak: u kod: 181 0xb5 0265
Znak: ¶ kod: 182 0xb6 0266
Znak: kod: 183 0xb7 0267
Znak: ¸ kod: 184 0xb8 0270
Znak: ą kod: 185 0xb9 0271
Znak: ş kod: 186 0xba 0272
Znak: » kod: 187 0xbb 0273
Znak: Ľ kod: 188 0xbc 0274
Znak: ˝ kod: 189 0xbd 0275
Znak: ľ kod: 190 0xbe 0276
Znak: ż kod: 191 0xbf 0277
Znak: Ŕ kod: 192 0xc0 0300
Znak: Á kod: 193 0xc1 0301
Znak: Â kod: 194 0xc2 0302
Znak: Ă kod: 195 0xc3 0303
Znak: Ä kod: 196 0xc4 0304
Znak: Ĺ kod: 197 0xc5 0305
Znak: Ć kod: 198 0xc6 0306
Znak: Ç kod: 199 0xc7 0307
Znak: Č kod: 200 0xc8 0310
Znak: É kod: 201 0xc9 0311
Znak: Ę kod: 202 0xca 0312
Znak: Ë kod: 203 0xcb 0313
Znak: Ě kod: 204 0xcc 0314
Znak: Í kod: 205 0xcd 0315
Znak: Î kod: 206 0xce 0316
Znak: Ď kod: 207 0xcf 0317
Znak: Đ kod: 208 0xd0 0320
Znak: Ń kod: 209 0xd1 0321
Znak: Ň kod: 210 0xd2 0322
Znak: Ó kod: 211 0xd3 0323
Znak: Ô kod: 212 0xd4 0324
Znak: Ő kod: 213 0xd5 0325
Znak: Ö kod: 214 0xd6 0326
Znak: × kod: 215 0xd7 0327
Znak: Ř kod: 216 0xd8 0330
Znak: Ů kod: 217 0xd9 0331
Znak: Ú kod: 218 0xda 0332
Znak: Ű kod: 219 0xdb 0333
Znak: Ü kod: 220 0xdc 0334
Znak: Ý kod: 221 0xdd 0335
Znak: Ţ kod: 222 0xde 0336
Znak: ß kod: 223 0xdf 0337
Znak: ŕ kod: 224 0xe0 0340
Znak: á kod: 225 0xe1 0341
Znak: â kod: 226 0xe2 0342
Znak: ă kod: 227 0xe3 0343
Znak: ä kod: 228 0xe4 0344
Znak: ĺ kod: 229 0xe5 0345
Znak: ć kod: 230 0xe6 0346
Znak: ç kod: 231 0xe7 0347
Znak: č kod: 232 0xe8 0350
Znak: é kod: 233 0xe9 0351
Znak: ę kod: 234 0xea 0352
Znak: ë kod: 235 0xeb 0353
Znak: ě kod: 236 0xec 0354
Znak: í kod: 237 0xed 0355
Znak: î kod: 238 0xee 0356
Znak: ď kod: 239 0xef 0357
Znak: đ kod: 240 0xf0 0360
Znak: ń kod: 241 0xf1 0361
Znak: ň kod: 242 0xf2 0362
Znak: ó kod: 243 0xf3 0363
Znak: ô kod: 244 0xf4 0364
Znak: ő kod: 245 0xf5 0365
Znak: ö kod: 246 0xf6 0366
Znak: ÷ kod: 247 0xf7 0367
Znak: ř kod: 248 0xf8 0370
Znak: ů kod: 249 0xf9 0371
Znak: ú kod: 250 0xfa 0372
Znak: ű kod: 251 0xfb 0373
Znak: ü kod: 252 0xfc 0374
Znak: ý kod: 253 0xfd 0375
Znak: ţ kod: 254 0xfe 0376
Znak: ˙ kod: 255 0xff 0377

Porównanie polskich znaków w kodach LATIN-2 i CP-1250 wygląda następująco:

LATIN-2

Znak: ć kod: 134 0x86 0206
Znak: ł kod: 136 0x88 0210
Znak: Ź kod: 141 0x8d 0215
Znak: Ć kod: 143 0x8f 0217
Znak: Ś kod: 151 0x97 0227
Znak: ś kod: 152 0x98 0230
Znak: Ł kod: 157 0x9d 0235
Znak: ó kod: 162 0xa2 0242
Znak: Ą kod: 164 0xa4 0244
Znak: ą kod: 165 0xa5 0245
Znak: Ę kod: 168 0xa8 0250
Znak: ę kod: 169 0xa9 0251
Znak: ź kod: 171 0xab 0253
Znak: Ż kod: 189 0xbd 0275
Znak: ż kod: 190 0xbe 0276
Znak: Ó kod: 224 0xe0 0340
Znak: Ń kod: 227 0xe3 0343
Znak: ń kod: 228 0xe4 0344
CP-1250
Znak: Ś kod: 140 0x8c 0214
Znak: Ź kod: 143 0x8f 0217
Znak: ś kod: 156 0x9c 0234
Znak: ź kod: 159 0x9f 0237
Znak: Ł kod: 163 0xa3 0243
Znak: Ą kod: 165 0xa5 0245
Znak: Ż kod: 175 0xaf 0257
Znak: ł kod: 179 0xb3 0263
Znak: ą kod: 185 0xb9 0271
Znak: ż kod: 191 0xbf 0277
Znak: Ć kod: 198 0xc6 0306
Znak: Ę kod: 202 0xca 0312
Znak: Ń kod: 209 0xd1 0321
Znak: Ó kod: 211 0xd3 0323
Znak: ć kod: 230 0xe6 0346
Znak: ę kod: 234 0xea 0352
Znak: ń kod: 241 0xf1 0361
Znak: ó kod: 243 0xf3 0363

Polskie znaki w obu kodach są ustawione nie po kolei, utrudnia to np. sortowanie alfabetyczne polskich wyrazów. Poniższa tabelka zawiera kody polskich znaków w obu systemach kodowania:

  Ą Ć Ę Ł Ń Ó Ś Ź Ż
LATIN-2
164
143
168
157
227
224
151
141
189
CP1250
165
198
202
163
209
211
140
143
175
  ą ć ę ł ń ó ś ź ż
LATIN-2
165
134
169
136
228
162
152
171
190
CP1250
185
230
234
179
241
243
156
159
191
Podsumowanie kodu ASCII
0...31 32...63 64...95 96...127 128...255
Znaki
sterujące
Znaki
pisarskie
Duże
litery
Małe
litery
Dodatkowe
znaki
  48...57      
  Cyfry
0...9
     

Kod ASCII nie jest obecnie jedynym kodem w użyciu. Wnikliwym proponuję zapoznać się z artykułami:

https://pl.wikipedia.org/wiki/UTF-8
https://pl.wikipedia.org/wiki/Unicode

Do zapamiętania:


Na początek:  podrozdziału   strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2024 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.

Informacje dodatkowe.