13. Таблица кодов ASCII
13. Таблица кодов ASCII
00 |
10 |
20 |
30 |
40 |
50 |
60 |
70 |
|
0 |
nul |
dle |
0 |
@ |
P |
` |
p |
|
1 |
soh |
dcl |
! |
1 |
A |
Q |
a |
q |
2 |
stx |
dc2 |
" |
2 |
B |
R |
b |
r |
3 |
ltx |
dc3 |
# |
3 |
C |
S |
c |
s |
4 |
eot |
stp |
$ |
4 |
D |
T |
d |
t |
5 |
enq |
nak |
% |
5 |
E |
U |
e |
u |
6 |
ack |
syn |
& |
6 |
F |
V |
f |
v |
7 |
bel |
etb |
' |
7 |
G |
W |
g |
w |
8 |
bs |
can |
( |
8 |
H |
X |
h |
x |
9 |
ht |
em |
) |
9 |
I |
Y |
i |
y |
A |
lf |
sub |
* |
: |
J |
Z |
j |
z |
B |
vt |
esc |
+ |
; |
K |
[ |
k |
{ |
C |
ff |
fs |
, |
< |
L |
\ |
l |
| |
D |
cr |
gs |
- |
= |
M |
] |
m |
} |
E |
so |
rs |
. |
> |
N |
^ |
n |
~ |
F |
si |
us |
/ |
? |
O |
_ |
o |
del |
Код символа равен коду столбца+номер строки. Например код буквы F: 40+6=46.
Надо отметить, что первые 32 кода (от 0 до 1F) в таблице АSCII являются управляющими. Они предназначены для представления сигналов для устройств вывода и передачи информации. Некоторые управляющие коды, хотя и имеют специальное назначение, могут быть использованы пользователями по своему усмотрению. Нередко управляющим кодам соответствуют специальные изображения, но эти изображения не зафиксированы в стандарте ASCII и на компьютерах разных типов могут иметь различный вид в зависимости от знакогенератора дисплея.
Назначение некоторых управляющих кодов:
soh - Start of Heading; stx - Start of Text;
etx - End of Text; eot - End of Transmition;
enq - Enquire; ack - Acknoledge;
so - Shit Out; si - Shit In;
dke - Data Link Escape; dc1 - Device Control 1;
dc2 - Device Control 2; dc3 - Device Control 3;
nak - Negative Acknoledger; nak - Synchronous Idle;
etb - End of Transmition Block; can - Cancel; em - End of Medium;
sub - Substitute; esc - Escape; fs - File Separator; gs - Group Separator;
rs - Record Separator; us - Unit Separator;
bs - возврат; ht - табуляция;
lf - перевод строки; ff - подача бланка;
cr - возврат каретки; esc - спецсимвол;
fs - разделитель файлов; gs - разделитель групп;
rs - разделитель записей; del - символ удаления;
Часть таблицы от кода 80 до FF является расширением стандарта ASCII и может изменяться на различных моделях компьютеров. В этой части таблицы, как правило, размещают буквы национальных алфавитов, символы псевдографики и др.
Расширенная таблица ASCII
char | hexa | decim | char | hexa | decim | char | hexa | decim | char | hexa | decim |
Nul | 00 | 0 | пробел | 20 | 32 | @ | 40 | 64 | ` | 60 | 96 |
SOH ☻ | 01 | 1 | ! | 21 | 33 | A | 41 | 65 | a | 61 | 97 |
STX J | 02 | 2 | " | 22 | 34 | B | 42 | 66 | b | 62 | 98 |
ETX ♥ | 03 | 3 | # | 23 | 35 | C | 43 | 67 | c | 63 | 99 |
EOT ♦ | 04 | 4 | $ | 24 | 36 | D | 44 | 68 | d | 64 | 100 |
ENQ ♣ | 05 | 5 | % | 25 | 37 | E | 45 | 69 | e | 65 | 101 |
ACK ♠ | 06 | 6 | & | 26 | 38 | F | 46 | 70 | f | 66 | 102 |
BEL | 07 | 7 | ' | 27 | 39 | G | 47 | 71 | g | 67 | 103 |
BS | 08 | 8 | ( | 28 | 40 | H | 48 | 72 | h | 68 | 104 |
HT | 09 | 9 | ) | 29 | 41 | I | 49 | 73 | i | 69 | 105 |
LF | 0a | 10 | * | 2a | 42 | J | 4a | 74 | j | 6a | 106 |
VT ♂ | 0b | 11 | + | 2b | 43 | K | 4b | 75 | k | 6b | 107 |
FF ♁ | 0c | 12 | , | 2c | 44 | L | 4c | 76 | l | 6c | 108 |
CR | 0d | 13 | - | 2d | 45 | M | 4d | 77 | m | 6d | 109 |
SO ♫ | 0e | 14 | . | 2e | 46 | N | 4e | 78 | n | 6e | 110 |
SI ☼ | 0f | 15 | / | 2f | 47 | O | 4f | 79 | o | 6f | 111 |
DLE ▶ | 10 | 16 | 0 | 30 | 48 | P | 50 | 80 | p | 70 | 112 |
DC1 ◀ | 11 | 17 | 1 | 31 | 49 | Q | 51 | 81 | q | 71 | 113 |
DC2 ↕ | 12 | 18 | 2 | 32 | 50 | R | 52 | 82 | r | 72 | 114 |
DC3 !! | 13 | 19 | 3 | 33 | 51 | S | 53 | 83 | s | 73 | 115 |
DC4 ¶ | 14 | 20 | 4 | 34 | 52 | T | 54 | 84 | t | 74 | 116 |
NAK§ | 15 | 21 | 5 | 35 | 53 | U | 55 | 85 | u | 75 | 117 |
SYN━ | 16 | 22 | 6 | 36 | 54 | V | 56 | 86 | v | 76 | 118 |
ETB | 17 | 23 | 7 | 37 | 55 | W | 57 | 87 | w | 77 | 119 |
CAN↑ | 18 | 24 | 8 | 38 | 56 | X | 58 | 88 | x | 78 | 120 |
EM ↓ | 19 | 25 | 9 | 39 | 57 | Y | 59 | 89 | y | 79 | 121 |
SUB→ | 1a | 26 | : | 3a | 58 | Z | 5a | 90 | z | 7a | 122 |
ESC ← | 1b | 27 | ; | 3b | 59 | [ | 5b | 91 | { | 7b | 123 |
FS | 1c | 28 | < | 3c | 60 | \ | 5c | 92 | | | 7c | 124 |
GS | 1d | 29 | = | 3d | 61 | ] | 5d | 93 | } | 7d | 125 |
RS ▴ | 1e | 30 | > | 3e | 62 | ^ | 5e | 94 | ~ | 7e | 126 |
US ▾ | 1f | 31 | ? | 3f | 63 | _ | 5f | 95 | DEL | 7f | 127 |
char | hexa | decim | char | hexa | decim | char | hexa | decim | char | hexa | decim |
Ç | 80 | 128 | á | a0 | 160 | └ | c0 | 192 | α | e0 | 224 |
ü | 81 | 129 | í | a1 | 161 | ┴ | c1 | 193 | ß | e1 | 225 |
é | 82 | 130 | ó | a2 | 162 | ┬ | c2 | 194 | Γ | e2 | 226 |
â | 83 | 131 | ú | a3 | 163 | ├ | c3 | 195 | π | e3 | 227 |
ä | 84 | 132 | ń | a4 | 164 | ─ | c4 | 196 | Σ | e4 | 228 |
à | 85 | 133 | Ń | a5 | 165 | ┼ | c5 | 197 | σ | e5 | 229 |
ĺ | 86 | 134 | ª | a6 | 166 | ╞ | c6 | 198 | µ | e6 | 230 |
ç | 87 | 135 | º | a7 | 167 | ╟ | c7 | 199 | τ | e7 | 231 |
ê | 88 | 136 | ¿ | a8 | 168 | ╚ | c8 | 200 | Φ | e8 | 232 |
ë | 89 | 137 | ⌐ | a9 | 169 | ╔ | c9 | 201 | Θ | e9 | 233 |
è | 8a | 138 | ¬ | aa | 170 | ╩ | ca | 202 | Ω | ea | 234 |
ď | 8b | 139 | ˝ | ab | 171 | ╦ | cb | 203 | δ | eb | 235 |
î | 8c | 140 | Ľ | ac | 172 | ╠ | cc | 204 | ∞ | ec | 236 |
ì | 8d | 141 | ˇ | ad | 173 | ═ | cd | 205 | φ | ed | 237 |
Ä | 8e | 142 | « | ae | 174 | ╬ | ce | 206 | ε | ee | 238 |
Ĺ | 8f | 143 | » | af | 175 | ╧ | cf | 207 | ∩ | ef | 239 |
É | 90 | 144 | ░ | b0 | 176 | ╨ | d0 | 208 | ≡ | f0 | 240 |
ć | 91 | 145 | ▒ | b1 | 177 | ╤ | d1 | 209 | ± | f1 | 241 |
Æ | 92 | 146 | ▓ | b2 | 178 | ╥ | d2 | 210 | ≥ | f2 | 242 |
ô | 93 | 147 | │ | b3 | 179 | ╙ | d3 | 211 | ≤ | f3 | 243 |
ö | 94 | 148 | ┤ | b4 | 180 | Ô | d4 | 212 | ⌠ | f4 | 244 |
ò | 95 | 149 | ╡ | b5 | 181 | ╒ | d5 | 213 | ⌡ | f5 | 245 |
û | 96 | 150 | ╢ | b6 | 182 | ╓ | d6 | 214 | ÷ | f6 | 246 |
ù | 97 | 151 | ╖ | b7 | 183 | ╫ | d7 | 215 | ≈ | f7 | 247 |
ÿ | 98 | 152 | ╕ | b8 | 184 | ╪ | d8 | 216 | ≈ | f8 | 248 |
Ö | 99 | 153 | ╣ | b9 | 185 | ┘ | d9 | 217 | ∙ | f9 | 249 |
Ü | 9a | 154 | ║ | ba | 186 | ┌ | da | 218 | fa | 250 | |
˘ | 9b | 155 | ╗ | bb | 187 | █ | db | 219 | √ | fb | 251 |
Ł | 9c | 156 | ╝ | bc | 188 | ▄ | dc | 220 | ⁿ | fc | 252 |
Ą | 9d | 157 | ╜ | bd | 189 | ▌ | dd | 221 | ˛ | fd | 253 |
₧ | 9e | 158 | ╛ | be | 190 | ▐ | de | 222 | ■ | fe | 254 |
ƒ | 9f | 159 | ┐ | bf | 191 | ▀ | df | 223 | ff | 255 |
3.1.4. Строки
3.1.4. Строки
Строка – это последовательность символов алфавита, заключенных в двойные кавычки:
"<последовательность символов>"
Примером строки является следующая конструкция: "Это строка языка Си". Пробел является значащим символом строки, а двойные кавычки вводятся для того, чтобы отметить в программе начало и конец строки. По тому, как строки выглядят в тексте программы, их можно отнести к классу строковых констант, однако, строго говоря, строка не является константой и рассматривается компилятором как массив (последовательность элементов), в котором каждый элемент занимает один байт и имеет значение кода соответствующего символа, входящего в состав строки.
В конец строки компилятор помещает нулевой байт – "нуль-символ" (NULL), который используется для того, чтобы отметить конец строки. Таким образом, строка занимает в памяти на 1 байт больше, чем количество содержащихся в ней символов. Нуль-символ – это не символ алфавита 0, он не выводится на печать, в таблице кодов ASCII имеет номер 0 и его двоичный код состоит только из нулей (\0). В отличие от нуль-символа "символ-цифра 0" имеет код \60.
Ввиду того, что строка рассматривается компилятором не как константа, а как массив символов, каждая строка сохраняется в отдельном месте памяти, даже если она идентична уже имеющейся в памяти какой-либо другой строке.
В состав последовательности символов строки могут входить любые символы, в том числе символы из таблицы 3.3 (без обрамления их одинарными кавычками) и символы, определяемые кодами \ddd и \xHHH. Например, чтобы напечатать из программы текст Запомните, "символ \ называется обратной дробной чертой (back slash)", выводимую строку в программе можно записать так:
"Запомните, \"символ \\ называется обратной дробной чертой (back slash)\".\n"
или
"Запомните, \x22 символ \x5c называется обратной дробной чертой (back slash)\x22.\n"
В состав строки включены символы таблицы 3.3: \" , \\ и \n. Наличие управляющего символа \n в конце сроки вызовет после вывода текста перевод на новую строку.
Необходимо четко различать символьные константы и строки. Например, 'xy' – это двухбайтовая символьная константа, "xy" – строка, занимающая 3 байта памяти, "" – пустая строка, занимающая 1 байт памяти, в котором записан нуль-символ.
Так как строки – это, по сути, массивы, их можно программным путем обрабатывать, заменяя или перекомпоновывая в памяти символы, определять длину строки по конечному нуль-символу и т.д.
Компилятор Турбо-Си производит объединение нескольких строк в одну, если они записаны в программе друг за другом.
Например:
"Это пример того, как Турбо-Си"
"автоматически \n осуществляет объединение"
"строк в одну длинную строку, \n"
"что может быть нами использовано для большей"
"наглядности программы. \n"
В этом случае в памяти будет сформирована одна длинная строка, в конце которой будет проставлен нуль-символ.
3.1.3. Символьные константы
3.1.3. Символьные константы
Символьная константа – это некоторый символ алфавита, заключенный в одиночные кавычки: '<символ_алфавита>' .
Примеры символьных констант: 'a' 'B' '=' '+' 'F' '[' 'd'.
Значением символьной константы является целое число, равное ASCII-коду (American Standard Code for Information Interchange, Американский стандартный код обмена информацией) данного символа. Символьная константа имеет тип int(char) и представляется 16(8)-битной величиной.
В таблице кодов ASCII (см. приложение) имеются коды, которые не отображаются при печати, а производят некоторые действия, например, перевод на новую строку (LF), подача звукового сигнала, гудка – BELL) и т. д. Для таких кодов на клавиатуре не предусмотрено отдельных клавиш, и при вводе с клавиатуры они набираются сочетанием определенных клавиш: например, нажатие клавиши Ctrl и G влечет за собой поступление в память кода "гудок", а при выводе символа, имеющего значение кода "гудок", компьютер подает звуковой сигнал.
Возникает вопрос: каким образом использовать подобные коды в программе? Для этого Си предоставляет два способа, имеющих непосредственное отношение к символьным константам.
Первый способ. Любой символ таблицы ASCII-кодов можно определить в виде символьной константы следующим образом:
'\ddd' или '\xHHH',
где ddd – восьмеричный, а HHH шестнадцатеричный код символа. Ведущие нули в представлении кода символа можно не записывать. Таким образом, в соответствии с этим вышеуказанные примеры символьных констант можно записать
символ |
'a' |
'B' |
'=' |
'+' |
'F' |
'[' |
'd' |
код |
'\141' |
'\102' |
'\75' |
'\53' |
'\106' |
'\133' |
'\144' |
код |
'\x61' |
'\x42' |
'\x3D' |
'\x2B' |
'\x46' |
'\x5B' |
'\x64' |
Символ, вызывающий подачу звукового сигнала, записывается в виде '\07', а символ, вызывающий перевод печати на новую строку – '\x0A'.
Второй способ заключается в том, что часто используемые неотображаемые символы не нужно записывать их кодами, а можно использовать для них зарезервированные обозначения. Эти символы в Си выделены в класс управляющих символов, представленных в таблице 3.3.
Таблица 3.3. Управляющие символы
Символ Си | Символ ASCII | Название символа |
\n' |
LF |
Новая строка |
'\t' |
HT |
Горизонтальная табуляция |
'\v' |
VT |
Вертикальная табуляция |
'\b' |
BS |
Шаг назад |
'\r' |
CR |
Возврат каретки |
'\f' |
FF |
Подача бланка |
\a' |
BEL |
Гудок |
'\'' |
' |
Одинарная кавычка |
'\"' |
" |
Двойная кавычка |
'\\' |
\ |
Обратная дробная черта |
'\?' |
? |
Вопрос |
Если управляющие символы встречаются, например, в строке вывода, то они вызывают соответствующее действие. Первые шесть управляющих символов являются символами управления работой печатающего устройства: символ "новая строка" переводит печать на начало следующей строки; символ "горизонтальная табуляция" продвигает печать в текущей строке в очередную фиксированную позицию строки. По умолчанию позиции в строке фиксируются через каждые 8 символов. Фиксированные позиции можно изменять, используя так называемые ESC-последовательности, формат которых описывается в документации по принтеру.
Символ "вертикальная табуляция" продвигает печать на начало очередных фиксированных номеров строк, которые также определяются ESC-последовательностью принтера.
Символ "шаг назад" производит сдвиг печати в текущей строке на одну позицию назад, т.е. позволяет на одном и том же знакоместе напечатать некоторое количество символов.
Символ "подача бланка" производит пропуск оставшейся части текущего текста и начинает печать со следующего нового листа.
Седьмой символ таблицы "гудок" инициирует подачу звукового сигнала. Оставшиеся четыре символа не относятся, по сути, к управляющим, но они включены в таблицу, так как имеют аналогичные зарезервированные обозначения. Их обычное использование в строковых константах (см. следующий раздел 3.1.4.) в качестве символов могло бы привести к ошибке, а использование именно в таком виде позволяет печатать их в строке вывода.
Сказанное не относится к символу "вопрос". По всей вероятности, символ "вопрос" попал в число зарезервированных символов в связи с тем, что в Си имеется операция, обозначаемая знаком "?", и в некоторых ситуациях это могло бы привести к неоднозначному толкованию конструкций языка. Знак "вопрос", как символьную константу, можно записать любым рассмотренным способом: '?' '\77' 'x3F' '\?' .
В заключение раздела обращаем внимание на то, что символьные константы являются целыми константами. Следовательно, допустима запись и двухсимвольных констант, например, таких: 'ab' 'ta' 'ma' 'do'. Однако в этом случае их необходимо обрабатывать как данные типа int. Если двухсимвольную константу попытаться присвоить переменной типа char, то произойдет потеря второго символа.
Двухсимвольную константу можно записать в виде '\ddC' или в виде '\xHHc', где С – символ алфавита отличный от восьмеричной цифры, с – символ, отличный от шестнадцатеричной цифры. Например, '\538' все равно что '+8', ибо компилятор воспринимает \53 как восьмеричный код символа +, за которым стоит символ 8. Аналогично '\x6DQ'воспринимается как 'mQ', т.е. \x6D – шестнадцатеричный код символа m, за которым записан символ Q. Мы не советуем применять такие "хитроумные штучки", хотя Си предоставляет в этом плане широчайшие возможности.
Таблица символьного типа
Тип и стандартная длина | Модифи-катор | Реакция компилятора длина |
char(1 байт) | signed unsined |
Первый бит рассматривается, как знаковый, остальные 7 определяют значение Наибольшее значение 127.Значение от 0 до 255. Гарантия непринятия отрицательного значения |
char16_t(2 байта) | Значение от 0 до 65538. | |
char32_t(4 байта) | Значение от 0 до 4294967295. |
Для работы с расширенным набором символов используется, таких как Unicode, тип wchar_t (широкий символ, 16 бит в Windows, 32 ,бита в GNU/Linux , но может представляться и 8 битовым значением.
В стандарте С и С++ от 2011 года введены фиксированные символьные типы char16_t and char32_t для обеспечения недвусмысленного представления 16-битового и 32 битового преобразования Unicode форматов.
Урок 3.2. Переменные
3.2. Переменные
Понятие переменная аналогично общепринятым математическим понятиям. Например, если вычисляются значения точек графика функции у=2*sin(x)-5, то ясно, что 2 и 5 - это константы, а х и у переменные, так как в ходе вычислений х и у могут принимать различные значения.
Переменная - это некоторая величина, которая в ходе выполнения программы может принимать различные значения |
Для переменных программист должен установить свои собственные символические обозначения, которые называются идентификаторами. Часто идентификаторы называют символическими именами или просто именами.
Урок 3.1. Константы
3.1. Константы
Как видно из приведенного примера в разделе 2, в программе на Си в явном виде записаны различные числовые и текстовые значения. Такие значения, появляющиеся в программе, принято называть константами.
Константа - это числовое или текстовое значение, которое всегда определено и в ходе выполнения программы не может изменяться. |
Тип константы определяется формой ее записи, а значение заключено в ней самой.