ASCII (англ. American Standard Code for Information Interchange ) — американская стандартная кодировочная таблица для печатных символов и некоторых специальных кодов. В американском варианте английского языка произносится [э́ски], тогда как в Великобритании чаще произносится [а́ски]; по-русски произносится также [а́ски] или [аски́].
ASCII представляет собой кодировку для представления десятичных цифр, латинского и национального алфавитов, знаков препинания и управляющих символов. Изначально разработанная как 7-битная, с широким распространением 8-битного байта ASCII стала восприниматься как половина 8-битной. В компьютерах обычно используют расширения ASCII с задействованным 8-м битом и второй половиной кодовой таблицы (например КОИ-8).
Содержание
Наложение символов
Благодаря символу BS (возврат на шаг) на принтере можно печатать один символ поверх другого. В ASCII было предусмотрено добавление таким образом диакритики к буквам, например:
Примечание: в старых шрифтах апостроф ‘ рисовался с наклоном влево, а тильда
была сдвинута вверх, так что они как раз подходили на роль акута и тильды сверху.
Если на символ накладывается тот же символ, то получается эффект жирного шрифта, а если на символ накладывается подчёркивание, то получается подчёркнутый текст.
Примечание: это используется, например, в справочной системе man.
Национальные варианты ASCII
Стандарт ISO 646 (ECMA-6) предусматривает возможность размещения национальных символов на месте @ [ \ ] ^ `
. В дополнение к этому, на месте # может быть размещён £, а на месте $ — ¤. Такая система хорошо подходит для европейских языков, где нужны лишь несколько дополнительных символов. Вариант ASCII без национальных символов называется US-ASCII, или «International Reference Version».
Для некоторых языков с нелатинской письменностью (русского, греческого, арабского, иврита) существовали более радикальные модификации ASCII. Одним из вариантов был отказ от строчных латинских букв — на их месте размещались национальные символы (для русского и греческого — только заглавные буквы). Другой вариант — переключение между US-ASCII и национальным вариантом «на лету» с помощью символов SO (Shift Out) и SI (Shift In) — в этом случае в национальном варианте можно полностью устранить латинские буквы и занять всё пространство под свои символы. См. также КОИ-7.
Впоследствии оказалось удобнее использовать 8-битные кодировки (кодовые страницы), где нижнюю половину кодовой таблицы (0—127) занимают символы US-ASCII, а верхнюю (128—255) — дополнительные символы, включая набор национальных символов. Таким образом, верхняя половина таблицы ASCII до повсеместного внедрения Юникода активно использовалась для представления локализированных символов, букв местного языка. Отсутствие единого стандарта размещения кириллических символов в таблице ASCII доставляло множество проблем с кодировками (КОИ-8, Windows-1251 и другие). Другие языки с нелатинской письменностью тоже страдали из-за наличия нескольких разных кодировок.
В Юникоде первые 128 символов тоже совпадают с соответствующими символами US-ASCII.
Кодировка
.0
.1
.2
.3
.4
.5
.6
.7
.8
.9
.A
.B
.C
.D
.E
.F
0.
NUL
SOH
STX
ETX
EOT
ENQ
ACK
BEL
BS
TAB
LF
VT
FF
CR
SO
SI
1.
DLE
DC1
DC2
DC3
DC4
NAK
SYN
ETB
CAN
EM
SUB
ESC
FS
GS
RS
US
2.
!
«
#
$
%
&
‘
(
)
*
+
,
—
.
/
3.
0
1
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
<
|
>
Символ 0x5e в первой версии стандарта ASCII (1963) соответствовал стрелке вверх, а символ 0x5f — стрелке влево. Стандарт ECMA-6 (1965) заменил их на знак вставки (используемый также в роли циркумфлекса) и нижнюю черту (подчёркивание) соответственно.
Управляющие символы
Поскольку ASCII изначально предназначался для обмена информацией (по телетайпу), в нём, кроме информационных символов, используются символы-команды для управления связью. Это обычный набор спецсигналов, применявшийся и в других докомпьютерных средствах обмена сообщениями (азбука Морзе, семафорная азбука), дополненный с учётом специфики устройства.
(После названия каждого символа указан его 16-ричный код)
Структурные свойства таблицы
Представление ASCII в ЭВМ
На подавляющем большинстве современных компьютеров минимально адресуемая единица памяти — 8-битный байт, поэтому там используются 8-битные, а не 7-битные символы. Обычно символ ASCII расширяют до 8 бит, просто добавляя один нулевой бит в качестве старшего.
На компьютерах системы IBM/360, однако, в случае использования ASCII применялся другой метод: 6-й бит (если считать самый младший бит первым) перемещается в 7-й, а бывший 7-й «раздваивается» и копируется и в 8-й бит, и в 6-й. Получается такая таблица [1] :
.0
.1
.2
.3
.4
.5
.6
.7
.8
.9
.A
.B
.C
.D
.E
.F
0.
NUL
SOM
EOA
EOM
EQT
WRU
RU
BELL
BKSP
HT
LF
VT
FF
CR
SO
SI
1.
DC0
DC1
DC2
DC3
DC4
ERR
SYNC
LEM
S0
S1
S2
S3
S4
S5
S6
S7
2.
3.
4.
BLANK
!
«
#
$
%
&
‘
(
)
*
+
,
—
.
/
5.
0
1
2
3
4
5
6
7
8
9
:
;
?
6.
7.
8.
9.
A.
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
B.
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
↑
←
C.
D.
E.
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
F.
p
q
r
s
t
u
v
w
x
y
z
ESC
DEL
На тех компьютерах, где минимально адресуемой единицей памяти было 36-битное слово, поначалу использовали 6-битные символы (1 слово = 6 символов). После перехода на ASCII на таких компьютерах в одном слове стали размещать либо 5 семибитных символов (1 бит оставался лишним), либо 4 девятибитных символа.
ASCII-коды используются также для определения нажатой клавиши при программировании. Для стандартной QWERTY-клавиатуры таблица кодов выглядит следующим образом:
ASCII представляет собой кодировочную таблицу печатных символов (см. скриншот №1), набираемых на компьютерной клавиатуре, для передачи информации и некоторых кодов. Иными словами происходит кодирование алфавита и десятичных цифр в соответствующие символы, представляющие и несущие в себе необходимую информацию.
Кодировка ASCII была разработана в Америке, поэтому стандартная кодировочная таблица обычно включает в себя английский алфавит с цифрами, что в общей сложности составляет около 128 символов. Но тогда возникает справедливый вопрос: что делать, если необходима кодировка национального алфавита?
Где применяется система кодировки ASCII?
Данная кодировочная система необходима не только для набора текстовой информации на клавиатуре. Она также используется в графике. Например, в программе ASCII Art Maker графические изображения различных расширений состоят из спектра символов кодировки ASCII (см. скриншот №3).
Данный метод кодировки также может быть востребован во время написания или создания документа HTML. Например, вы вводите определённый и необходимый вам набор знаков, а при просмотре самой страницы на экран будет выведен символ, соответствующий данному коду.
Кроме всего прочего данный вид кодировки необходим при создании многоязычного сайта, потому что знаки, которые не входят в ту или иную национальную таблицу, нужно будет заменить ASCII кодами. Если читатель непосредственно связан с информационно-коммуникативными технологиями (ИКТ), то ему будет полезно ознакомиться и с такими системами как:
Свойства таблицы ASCII
Как и любая систематизированная программа, ASCII обладает своими характерными свойствами. Так, например, десятеричная система исчисления (цифры от 0 до 9) преобразуется в двоичную систему исчисления (т.е. каждая десятеричная цифра преобразуется в двоичную 288=1001000 соответственно).
Буквы, располагающиеся в верхних и нижних колонках, отличаются друг от друга лишь битом, что существенно снижает уровень сложности проверки и редактирование регистра.
При всех этих свойствах кодировка ASCII работает как восьми битная, хотя изначально предусматривалась как семи битная.
Применение ASCII в программах Microsoft Office:
В частности, будет недоступно выделение жирным и полужирным шрифтом, потому что кодирование сохраняет лишь смысл набранной информации, а не общий вид и форму. Добавить такие коды в документ вы можете с помощью следующих программных приложений:
При этом стоит учитывать, что набирая код ASCII в этих приложениях необходимо удерживать нажатой клавиатурную клавишу ALT.
Конечно, все необходимые коды требует более длительного и обстоятельного изучения, но это выходит за пределы нашей сегодняшней статьи. Надеюсь, что она оказалась для Вас действительно полезной.
ASCII (англ. American Standard Code for Information Interchange ) — американская стандартная кодировочная таблица для печатных символов и некоторых специальных кодов. В американском варианте английского языка произносится [э́ски], тогда как в Великобритании чаще произносится [а́ски]; по-русски произносится также [а́ски] или [аски́].
ASCII представляет собой кодировку для представления десятичных цифр, латинского и национального алфавитов, знаков препинания и управляющих символов. Изначально разработанная как 7-битная, с широким распространением 8-битного байта ASCII стала восприниматься как половина 8-битной. В компьютерах обычно используют расширения ASCII с задействованным 8-м битом и второй половиной кодовой таблицы (например КОИ-8 ).
Содержание
Наложение символов
Благодаря символу BS (возврат на шаг) на принтере можно печатать один символ поверх другого. В ASCII было предусмотрено добавление таким образом диакритики к буквам, например:
Примечание: в старых шрифтах апостроф ‘ рисовался с наклоном влево, а тильда
была сдвинута вверх, так что они как раз подходили на роль акута и тильды сверху.
Если на символ накладывается тот же символ, то получается эффект жирного шрифта, а если на символ накладывается подчёркивание, то получается подчёркнутый текст.
Национальные варианты ASCII
Стандарт ISO 646 (ECMA-6) предусматривает возможность размещения национальных символов на месте @ [ \ ] ^ `
. В дополнение к этому, на месте # может быть размещён £, а на месте $ — ¤. Такая система хорошо подходит для европейских языков, где нужны лишь несколько дополнительных символов. Вариант ASCII без национальных символов называется US-ASCII, или «International Reference Version».
В Юникоде первые 128 символов тоже совпадают с соответствующими символами US-ASCII.
Кодировка
.0
.1
.2
.3
.4
.5
.6
.7
.8
.9
.A
.B
.C
.D
.E
.F
0.
NUL
SOH
STX
ETX
EOT
ENQ
ACK
BEL
BS
TAB
LF
VT
FF
CR
SO
SI
1.
DLE
DC1
DC2
DC3
DC4
NAK
SYN
ETB
CAN
EM
SUB
ESC
FS
GS
RS
US
2.
!
«
#
$
%
&
‘
(
)
*
+
,
—
.
/
3.
0
1
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
<
|
>
Символ 0x5e в первой версии стандарта ASCII (1963) соответствовал стрелке вверх, а символ 0x5f — стрелке влево. Стандарт ECMA-6 (1965) заменил их на знак вставки (используемый также в роли циркумфлекса ) и нижнюю черту ( подчёркивание ) соответственно.
Управляющие символы
(После названия каждого символа указан его 16-ричный код)
Структурные свойства таблицы
Представление ASCII в ЭВМ
На подавляющем большинстве современных компьютеров минимально адресуемая единица памяти — 8-битный байт, поэтому там используются 8-битные, а не 7-битные символы. Обычно символ ASCII расширяют до 8 бит, просто добавляя один нулевой бит в качестве старшего.
.0
.1
.2
.3
.4
.5
.6
.7
.8
.9
.A
.B
.C
.D
.E
.F
0.
NUL
SOM
EOA
EOM
EQT
WRU
RU
BELL
BKSP
HT
LF
VT
FF
CR
SO
SI
1.
DC0
DC1
DC2
DC3
DC4
ERR
SYNC
LEM
S0
S1
S2
S3
S4
S5
S6
S7
2.
3.
4.
BLANK
!
«
#
$
%
&
‘
(
)
*
+
,
—
.
/
5.
0
1
2
3
4
5
6
7
8
9
:
;
?
6.
7.
8.
9.
A.
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
B.
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
↑
←
C.
D.
E.
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
F.
p
q
r
s
t
u
v
w
x
y
z
ESC
DEL
На тех компьютерах, где минимально адресуемой единицей памяти было 36-битное слово, поначалу использовали 6-битные символы (1 слово = 6 символов). После перехода на ASCII на таких компьютерах в одном слове стали размещать либо 5 семибитных символов (1 бит оставался лишним), либо 4 девятибитных символа.
ASCII-коды используются также для определения нажатой клавиши при программировании. Для стандартной QWERTY-клавиатуры таблица кодов выглядит следующим образом:
Понятие ASCII в разработке встроенного программного обеспечения
Данная статья служит для подготовки к обсуждению строк в языке C, знакомит с концепцией символов ASCII и объясняет два преимущества кодирования на основе ASCII.
Дополнительная информация:
Микропроцессор представляет собой сложную совокупность схем, которые управляют высокими логическими напряжениями и низкими логическими напряжениями. Для удобства мы называем эти напряжения единицами и нулями и разрабатываем процессоры таким образом, чтобы этими единицами и нулями можно было манипулировать одновременно и обрабатывать их как двоичные числа.
Большинство людей, которых я знаю, потеряли бы рассудок или уснули бы, если бы их заставили наблюдать за бесконечным потоком двоичных чисел в микропроцессор и из него. Вычислительные технологии изменили человеческое существование, потому что эти двоичные числа могут использоваться для представления вещей, которые действительно волнуют людей – музыка, фотографии или, в случае с ASCII, буквы и цифры.
Понятие ASCII
ASCII расшифровывается как American Standard Code for Information Interchange (Американский стандартный код для обмена информацией). В этом коде одно двоичное число обозначает ровно один символ, где «символ» обозначает заглавную букву, строчную букву, цифру, знак пунктуации или какой-либо другой символ, который вы можете найти на клавиатуре. В следующей таблице приведен «перевод» между числами (здесь они записаны в десятичной записи вместо двоичной) и символами ASCII, соответствующими заглавным и строчным буквам английского алфавита.
Фрагмент таблицы ASCII для английского алфавита
Символ
Десятичное значение
Символ
Десятичное значение
A
65
a
97
B
66
b
98
C
67
c
99
D
68
d
100
E
69
e
101
F
70
f
102
G
71
g
103
H
72
h
104
I
73
i
105
J
74
j
106
K
75
k
107
L
76
l
108
M
77
m
109
N
78
n
110
O
79
o
111
P
80
p
112
Q
81
q
113
R
82
r
114
S
83
s
115
T
84
t
116
U
85
u
117
V
86
v
118
W
87
w
119
X
88
x
120
Y
89
y
121
Z
90
z
122
Важно понимать, что ваш микроконтроллер ничего не знает об английских буквах, знаках препинания или цифрах. Ваш микроконтроллер – это очень маленькая машина обработки двоичных чисел, и любые символы, присутствующие в вашей прошивке, являются просто вашей интерпретацией двоичных чисел. Из-за ошибочного представления о том, что ваши переменные или элементы массива на самом деле содержат символы ASCII в той или иной форме, может возникнуть серьезная путаница. Разработка программного обеспечения (прошивок) для встраиваемых систем становится более понятной, более упорядоченной и более гибкой, когда вы понимаете, что символы в действительности являются двоичными числами и могут храниться, передаваться и обрабатываться как двоичные числа – они не становятся символами ASCII, пока вы не будете готовы интерпретировать их как символы ASCII.
Достоинства и недостатки ASCII
Я сторонник ASCII. Существует множество применений во встраиваемых системах, которые могут извлечь выгоду из использования символов ASCII, и я думаю, что будет хорошей идеей научиться распознавать ситуации, в которых вы можете вводить символы ASCII в свой код.
Широко используемый стандарт
Неоспоримым преимуществом ASCII является стандартизация. Интегрированные среды разработки, программы терминалов и пакеты вычислительного программного обеспечения понимают ASCII, и, следовательно, символы ASCII являются удобным и эффективным способом передачи и отображения информации.
Двоичное представление символов ASCII
Надежная передача данных
Менее заметным, но, возможно, не менее важным преимуществом является тот факт, что ASCII предоставляет средства представления информации с использованием ограниченного набора двоичных чисел. Любое числовое значение может быть представлено последовательностью цифр ASCII от 0 до 9 (вместе с представлением десятичной запятой в ASCII, если это необходимо). Эти символы ASCII соответствуют очень маленькому подмножеству из 256 значений, предлагаемых 8-битным двоичным числом. Но почему это важно?
Представьте, что у вас есть приложение, в котором микроконтроллер должен передавать на компьютер непредсказуемые и сильно изменяющиеся 8-битные показания датчиков. Если вы передаете данные в виде обычных двоичных чисел, отдельный байт может содержать любое число от 0 до 255. Это оставляет вас без удобного, простого способа организации данных или включения команд в поток данных, потому что все возможные двоичные числа нужны только для передачи необработанных результатов измерений. Компьютер не сможет отличить данные числовых измерений от других видов информации.
Если вы передаете данные измерений, используя символы ASCII вместо обычных двоичных чисел, в действие вступают преимущества ограниченного набора. Для представления числовых данных вам нужно только десять двоичных значений (соответствующих цифрам ASCII от 0 до 9), а другие двоичные значения могут быть зарезервированы для специальных функций, поскольку они никогда не появятся в данных измерений. (Если вы хотите прочитать о более эффективном, но более сложном подходе к организации цифровых данных, смотрите статью о связи на основе пакетов.)
Здесь цифры ASCII используются для передачи показаний температуры. Конец каждого показания идентифицируется символом возврата каретки (сокращенно CR); двоичное значение, соответствующее CR, никогда не появится в данных измерений
Снижение эффективности
Ценой, которую вы платите за стандартизацию и улучшенную передачу данных, является менее эффективное использование памяти, вычислительной мощности процессора и пропускной способности канала связи. ASCII – это система, основанная на байтах. Каждому символу требуется восемь бит – даже, например, цифра «1», которая в обычных двоичных условиях может быть представлена 1-битным числом, вместо 8-битного числа.
По моему опыту, это редко является серьезной проблемой. Современные микроконтроллеры обладают вычислительной мощностью и ресурсами памяти, которые намного превышают требования многих приложений. Однако если вам действительно нужно максимизировать производительность или минимизировать использование памяти, вам может потребоваться отказ от удобства ASCII.
От ASCII к строкам
Как упоминалось во введении, данная статья является не только обзором ASCII, но и введением в способ обработки символьного представления в языке программирования C. Мы называем этот тип представления строкой – это последовательность или «строка» символов ASCII. О массивах и строках в языке C можно прочитать в статье «Понятие массивов в программировании на C».