Российский государственный гуманитарный университет
Опубликован: 13.07.2022 | Доступ: свободный | Студентов: 346 / 38 | Длительность: 11:54:00
Специальности: Программист
Лекция 2:

Кодирование чисел и текста

< Лекция 1 || Лекция 2: 123456 || Лекция 3 >

Кодовая таблица CP-866 создана компанией IBM (табл. 2.9).

Вышеупомянутые таблицы являются ASCII-совместимыми: для кодирования символа в них используется один байт, первые 128 символов - такие же, как в базовой таблице ASCII.

Таблица 2.9. Таблица CP-866. Буквы русского алфавита, кроме Ё (240) и ё (241)
А Б В Г Д Е Ж З И Й К Л М Н О П
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 байта, так что представить в ней можно было 2^{16}, или 65536 значений. Символы обозначались четырьмя 16-ричными цифрами в виде U+04ff. Затем кодовая область была расширена. Применение стандарта позволяет закодировать большое число символов.

Стандарт системы Unicode содержит 2 основных раздела:

  1. UCS (Universal Character Set) - универсальный набор символов;
  2. UTF (Unicode Transformation Format) - семейство кодировок.

Универсальный набор символов UCS определяет соответствие символов кодам, а семейство кодировок UTF - представление последовательностей кодов в вычислительных устройствах.

Множество кодов образует кодовое пространство. Это пространство разделено на плоскости по 2^{16} символов. В нулевой плоскости, которая является базовой, расположены символы наиболее употребительных письменностей, в первой плоскости - исторические символы, и т. д. Символы нулевой плоскости занимают диапазон от 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. Символ \frac{7}{8} имеет код U+215e. Если в документе написать 215e (или U+215e) и затем использовать сочетание клавиш Alt + X, то код заменится символом \frac{7}{8}. После повторного нажатия 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.

Упражнения

  1. Найдите для числа (- 100) дополнительный код, если для двоичного кодирования используется следующее число байт:

    a) 1;

    b) 2;

    c) 4.

  2. Найдите дополнительный код при двоичном кодировании в 1 байте типа данных целых чисел со знаком числа:

    a) - 5;

    b) - 11;

    c) - 17;

    d) - 123.

  3. Найдите дополнительный код числа (- 73) при p-ичном кодировании в 1 байте, если p равно

    a) 2;

    b) 8;

    c) 10;

    d) 16.

  4. Найдите десятичное число, дополнительный двоичный код которого имеет вид:

    a) 10010001;

    b) 11001100;

    c) 1100110101001010.

  5. Найдите дополнительные коды и выполните операции сложения и вычитания в типе данных целых чисел со знаком при двоичном кодировании в 1 байте:

    a) 22 - 35;

    b) 35 - 22;

    c) 22 + 35;

    d) - 22 - 35.

  6. Замените операцию вычитания операцией сложения дополнительных кодов, при десятичном кодировании, и вычислите:

    a) 1024 - 736;

    b) 736 - 1024;

    c) 33 - 2222;

    d) 2222 - 33.

  7. Вычислите, заменив операцию вычитания операцией сложения дополнительных кодов при 16-ричном кодировании:

    a) a1b4 - 7c35;

    b) 7c35 - a1b4;

    c) aaa - e;

    d) e - aaa.

  8. Приведите к 1) нормальной; 2) субнормальной форме число

    a) - 22,22;

    b) 0,0055;

    c) 1001,1001_2;

    d) - 0,000001012.

  9. Найдите p-ичное представление нормализованного числа

    a) - 4,01e+5, p = 10;

    b) 6,7e-5, p = 10;

    d) 1,01_2 * 2^{- 5}, p = 2.

  10. Выполните действие и приведите результат к той же форме, нормальной или субнормальной:

    a) 2,02e+4 + 1,1e+2;

    b) 2,22e+3 - 3,3e-2;

    c) 4,4e+3 * 7,7e-2;

    d) 2e-7   5e+3;

    e) 0,1_2 * 2^{-100} + 0,1_2 * 2^{-99};

    f) 0,1_2 * 2^{-100} - 0,1_2 * 2^{-101};

    g) 1,011_2 * 2^6 * 1,01_2 * 2^{- 4};

    h) 1,0_2 * 2^5   1,1_2 * 2^7.

  11. Найдите представление числа 33,7, используя порядок записи байт 1) от старшего к младшему; 2) от младшего к старшему,

    a) с одинарной точностью (в типе данных float);

    b) с двойной точностью (в типе данных double).

  12. Найдите десятичное число, представление которого с одинарной точностью (в типе данных float) имеет вид:

    a) 40a38000 (hex);

    b) 006a8000 (hex),

    при записи байт от старшего к младшему.

  13. С помощью таблицы ASCII найдите код

    1) десятичный;

    2) шестнадцатеричный;

    3) двоичный

    a) слова Wisdom;

    b) фразы "Hello, World!";

    c) выражения y = x^2 + ln(x).

  14. Найдите текст, который в системе 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).

  15. Восстановите текст, написанный на русском языке:

    оПХБЕРЯРБСЧ РЕАЪ, ОСЯРШММШИ СЦНКНЙ (ю.я. оСЬЙХМ)

  16. Напишите фразу "Люблю грозу в начале мая", используя

    a) Alt-коды символов;

    b) 16-ричные коды и сочетание клавиш Alt + X.

  17. Вставьте в документ Word, с помощью кодов символов и сочетания клавиш Ctrl+= и Ctrl+Shift++, выражение

    a) H_2O;

    b) 2\pi r;

    c) \pir^2;

    d) \cos^2\alpha + \sin^2\alpha = 1.

  18. Вставьте в документ из таблицы символов Windows символ

    a) \Bbb R;

    b)


    ;

    c) \frac56

    d)


< Лекция 1 || Лекция 2: 123456 || Лекция 3 >