Кодирование чисел и текста
Кодовая таблица CP-866 создана компанией IBM (табл. 2.9).
Вышеупомянутые таблицы являются ASCII-совместимыми: для кодирования символа в них используется один байт, первые 128 символов - такие же, как в базовой таблице ASCII.
А | Б | В | Г | Д | Е | Ж | З | И | Й | К | Л | М | Н | О | П |
128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 |
Р | С | Т | У | Ф | Х | Ц | Ч | Ш | Щ | Ъ | Ы | Ь | Э | Ю | Я |
144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 |
А | б | в | г | д | е | ж | з | и | й | к | л | м | н | о | п |
160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 |
Р | с | т | у | ф | х | ц | ч | ш | щ | ъ | ы | ь | э | ю | я |
224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 245 | 246 | 247 | 248 | 249 |
Пример 23. Слово "Наука" имеет десятичный код
238 193 213 203 193 - в кодировке КОИ-8;
205 224 243 234 224 - в кодировке CP-1251;
141 160 227 170 160 - в кодировке CP-866.
В системе CP-1251 двоичный код этого слова имеет вид: 110011011110 0000111100111110101011100000, или cd e0 f3 ea e0 (hex).
Пример 24. Сообщение "Привет, мир!", написанное в кодировке CP-1251 и прочитанное в кодировке КОИ-8, будет выглядеть следующим образом: "оПХБЕР, ЛХП!". Этот же текст, написанный в кодировке КОИ-8, будет в кодировке CP-1251 иметь вид: "рТЙЧЕФ, НЙТ!".
В самом деле, в первом случае выражение "Привет, мир!" в десятичном виде кодируется так, как показано ниже ( табл. 2.6 и 2.8):
34 207 240 232 226 229 242 44 32 236 232 240 33 34
Если этот код декодировать с помощью таблиц 2.6 и 2.7, то получится строка "оПХБЕР, ЛХП!".
Во втором случае кодирование и декодирование выполняется аналогичным образом.
Система кодирования Unicode
Стандарт универсальной системы кодирования Unicode (Юникод) был предложен в 1991 г. организацией Консорциум Юникода (Unicode Consortium). Сначала для кодирования символа в этой системе использовалось 2 байта, так что представить в ней можно было , или 65536 значений. Символы обозначались четырьмя 16-ричными цифрами в виде U+04ff. Затем кодовая область была расширена. Применение стандарта позволяет закодировать большое число символов.
Стандарт системы Unicode содержит 2 основных раздела:
- UCS (Universal Character Set) - универсальный набор символов;
- UTF (Unicode Transformation Format) - семейство кодировок.
Универсальный набор символов UCS определяет соответствие символов кодам, а семейство кодировок UTF - представление последовательностей кодов в вычислительных устройствах.
Множество кодов образует кодовое пространство. Это пространство разделено на плоскости по символов. В нулевой плоскости, которая является базовой, расположены символы наиболее употребительных письменностей, в первой плоскости - исторические символы, и т. д. Символы нулевой плоскости занимают диапазон от U+0000 до U+ffff, первой плоскости - от U+10000 до U+1ffff, и так далее, до U+10ffff.
Символы каждой плоскости разделены на несколько областей. Например, область с кодами от U+0000 до U+007f содержит символы базовой таблицы ASCII. Буквы русского языка, кроме Ё и ё, имеют коды от U+0410 до U+044f; буква Ё имеет код U+0401, а буква ё - код U+0451.
Существует несколько форматов представления кодов символов системы Unicode. Например, представление системы UTF-8 обеспечивает наилучшую совместимость с системами, использующими 8-битные символы. Текст, состоящий только из символов, номера которых менее 128, при записи в UTF-8 преобразуется в обычный текст ASCII. И, наоборот, в кодах UTF-8 байт, значение которого менее 128, соответствует символу ASCII с тем же кодом. Остальные символы отображаются последовательностями длиной от 2 до 6 байт. В системе UTF-16 для кодирования Unicode-символов используется от 2 до 4 байт; всего она позволяет записать 1 112 064 символов. Система UTF-32 использует для кодирования каждого символа 4 байта, при этом символ является прямым представлением его кодовой позиции.
Ввод символов по кодам. Таблица символов Windows
Рассмотрим способы, с помощью которых можно ввести символы в документ Office по их кодам, десятичным или 16-ричным, если на компьютере установлена операционная система Windows.
Первый способ - использовать Alt-код, который представляет собой десятичный код символа, вводящийся на цифровой клавиатуре при нажатой клавише Alt (цифровая клавиатура должна быть включена). Символ в документе отображается после отпускания клавиши Alt.
Отметим, что Alt-коды 32 - 255 соответствуют кодовой странице CP-866.
Пример 25. Удерживая клавишу Alt, введем на цифровой клавиатуре код 239, затем отпустим клавишу Alt. В результате появится буква я (табл. 2.9).
Если последовательно ввести Alt-коды 192 и 197, получится
.Букву ё можно ввести как с помощью Alt-кода 241, так и с помощью Alt-кода 1105, так как эта буква в системе Unicode представлена 16-ричным кодом U+0451, что соответствует десятичному коду 1105.
Второй способ ввести символ с помощью кода - написать в документе 16-ричный код символа из таблицы Unicode и затем использовать сочетание клавиш Alt + X, чтобы преобразовать код в символ. Можно выполнить и обратное действие: чтобы отобразить код Unicode-символа, уже находящегося в документе, следует поместить курсор непосредственно после символа и нажать Alt + X.
Пример 26. Символ имеет код U+215e. Если в документе написать 215e (или U+215e) и затем использовать сочетание клавиш Alt + X, то код заменится символом . После повторного нажатия Alt + X вместо этого символа появится код 215E.
Пример 27. Римские числа, приведенные ниже, можно ввести как с помощью 16-ричных кодов 2160 - 216f и сочетания клавиш Alt + X, так и с помощью Alt-кодов 8544 - 8559:
I II III IV V VI VII VIII IX X XI XII L C D M
Таблица символов Windows входит в состав операционной системы Windows. В этой таблице содержатся все символы для имеющихся в системе шрифтов. Для того чтобы поместить символ из этой таблицы в документ, его следует выделить, а затем использовать кнопки "Выбрать" и "Копировать" (и сочетание клавиш Ctrl+V).
Пример 28. Откроем таблицу символов Windows с помощью сочетания клавиш Win + R и ввода charmap в командной строке, выберем в ней символы
и вставим их в документ. Первые два из них являются символами шрифта Cambria Math, третий - символом из Wingdings.Упражнения
-
Найдите для числа (- 100) дополнительный код, если для двоичного кодирования используется следующее число байт:
a) 1;
b) 2;
c) 4.
-
Найдите дополнительный код при двоичном кодировании в 1 байте типа данных целых чисел со знаком числа:
a) - 5;
b) - 11;
c) - 17;
d) - 123.
-
Найдите дополнительный код числа (- 73) при p-ичном кодировании в 1 байте, если p равно
a) 2;
b) 8;
c) 10;
d) 16.
-
Найдите десятичное число, дополнительный двоичный код которого имеет вид:
a) 10010001;
b) 11001100;
c) 1100110101001010.
-
Найдите дополнительные коды и выполните операции сложения и вычитания в типе данных целых чисел со знаком при двоичном кодировании в 1 байте:
a) 22 - 35;
b) 35 - 22;
c) 22 + 35;
d) - 22 - 35.
-
Замените операцию вычитания операцией сложения дополнительных кодов, при десятичном кодировании, и вычислите:
a) 1024 - 736;
b) 736 - 1024;
c) 33 - 2222;
d) 2222 - 33.
-
Вычислите, заменив операцию вычитания операцией сложения дополнительных кодов при 16-ричном кодировании:
a) a1b4 - 7c35;
b) 7c35 - a1b4;
c) aaa - e;
d) e - aaa.
-
Приведите к 1) нормальной; 2) субнормальной форме число
a) - 22,22;
b) 0,0055;
c) ;
d) - 0,000001012.
-
Найдите p-ичное представление нормализованного числа
a)
b)
d)
-
Выполните действие и приведите результат к той же форме, нормальной или субнормальной:
a)
b)
c)
d)
e)
f)
g)
h)
-
Найдите представление числа 33,7, используя порядок записи байт 1) от старшего к младшему; 2) от младшего к старшему,
a) с одинарной точностью (в типе данных float);
b) с двойной точностью (в типе данных double).
-
Найдите десятичное число, представление которого с одинарной точностью (в типе данных float) имеет вид:
a) 40a38000 (hex);
b) 006a8000 (hex),
при записи байт от старшего к младшему.
-
С помощью таблицы ASCII найдите код
1) десятичный;
2) шестнадцатеричный;
3) двоичный
a) слова Wisdom;
b) фразы "Hello, World!";
c) выражения y = x^2 + ln(x).
-
Найдите текст, который в системе ASCII кодируется следующим образом:
0100010101110100011001010111001001101110011010010111010001111001;
66 6f 72 20 77 68 61 74 65 76 65 72 20 61 20 6d 61 6e 20 73 6f 77 73 2c 20 74 68 61 74 20 68 65 20 77 69 6c 6c 20 61 6c 73 6f 20 72 65 61 70 (hex).
-
Восстановите текст, написанный на русском языке:
оПХБЕРЯРБСЧ РЕАЪ, ОСЯРШММШИ СЦНКНЙ (ю.я. оСЬЙХМ)
-
Напишите фразу "Люблю грозу в начале мая", используя
a) Alt-коды символов;
b) 16-ричные коды и сочетание клавиш Alt + X.
-
Вставьте в документ Word, с помощью кодов символов и сочетания клавиш Ctrl+= и Ctrl+Shift++, выражение
a) ;
b) ;
c) ;
d) .
-
Вставьте в документ из таблицы символов Windows символ
a) ;
b)
;c)
d)