Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практическая информация (эл. версия учебника).doc
Скачиваний:
17
Добавлен:
15.11.2018
Размер:
10.75 Mб
Скачать

Запись содержимого полубайта в разных системах счисления

Двоичная система

Десятичная система

Шестнадцатеричная система

0000

0

0

0001

1

1

0010

2

2

0011

3

3

0100

4

4

0101

5

5

0110

6

6

0111

7

7

1000

8

8

1001

9

9

1010

10

A

1011

11

B

1100

12

C

1101

13

D

1110

14

E

1111

15

F

Поскольку байт состоит из двух полубайтов, то содержимое 1 байта памяти всегда можно записать двумя шестнадцатеричными цифрами.

3.2.3. Кодирование текста

Для кодирования алфавитно-цифровой информации обычно применяется код ASCII (American Standard Code for Information Interchange). Для кодирования одного символа требуется один байт. Коды от 0 до 127 (от 0 до 7F16) используются для кодирования цифр, английских букв и распространённых символов. Например, шестнадцатеричным кодом цифры 0 будет 3016, кодом английской буквы A – 4116. Коды от 128 до 255 (от 8016 до FF16) применяются для кодирования букв национальных алфавитов (в России – русских букв) и символов псевдографики. На персональных компьютерах код ASCII используется при работе под управлением дисковой операционной системы (DOS), а также в текстовом редакторе Блокнот, работающем под управлением операционной системы Windows. Для кодирования символов в большинстве других программ, работающих под управлением различных версий Windows, применяется код ANSI, отличающийся от ASCII в части кодирования букв национальных алфавитов, не совпадающих с английским. Общей чертой этих и некоторых других встречающихся кодировок текста является использование 1 байта для кодирования 1 символа. Для перекодирования текстовой информации (ASCII ANSI, ANSIASCII и т.п.) используются специальные программы.

В текстовых процессорах (п. 7.1) используется Unicode – один символ кодируется в двух байтах.

3.2.4. Кодирование чисел

Числа в тексте документов представляются в виде символов. Например, число 123708 может быть представлено в виде шести символов, обозначающих цифры. Но в такой кодировке числа не могут участвовать в арифметических операциях. Поэтому в числовых массивах, предназначенных для расчетов, числа кодируются иначе. Например, целое число 123708 в шестнадцатеричной и двоичной системах счисления можно записать так:

123708 = 1E33C (16) = 0001 1110 0011 0011 1100 (2)

Рассматриваемые системы счисления являются позиционными: значение каждой цифры зависит от ее позиции в числе. Позиция 0 (крайняя справа в целой части числа) подразумевает умножение стоящей в ней цифры на основание системы, возведенное в степень 0. Цифра в позиции 1 должна быть умножена на основание системы, возведенное в степень 1 и т.д. Например, цифра 7 в десятичном представлении числа 123708 находится во второй позиции и, следовательно, означает 7 . 102 = 700. Шестнадцатеричное представление числа 123708 можно пояснить следующей записью:

1E33C (16) = 1*16 4 + 14*16 3 + 3*16 2 + 3*16 1 +12*16 0 = 65536+57344+768+48+12 =123708

От шестнадцатеричной записи очень легко перейти к двоичной, заменив каждую шестнадцатеричную цифру четырьмя двоичными согласно таблице 3.1.

Целые числа обычно хранятся в двухбайтовом (Integer - целое) или четырехбайтовом (Long – длинное целое) формате. В n байтах можно отобразить целое положительное число от 0 до 256 n - 1. Поскольку один из разрядов требуется для кодирования знака числа, то максимальное по модулю целое число, которое можно закодировать в двух байтах, равно 32767 , а в четырех байтах - 2147483647. При размещении целого числа на регистре арифметического устройства процессора число «прижимается» к правому краю регистра – считается, что десятичная точка зафиксирована справа от младшего разряда. Поэтому по способу представления целые числа называют еще числами с фиксированной точкой.

Есть особенности кодирования отрицательных целых чисел. Отрицательные целые числа могут кодироваться в обратном или дополнительном коде. Обычно эти особенности поясняют на примере кодирования в одном байте небольших чисел. Запишем в одном байте, например, число 17(10) = 21(8) = 010001(2). При этом знаковый разряд для наглядности будем отделять от остальных семи разрядов запятой. Тогда положительное число 010001(2) в восьмиразрядной сетке будет иметь вид:

0,0010001

В прямом коде то же самое по модулю, но отрицательное число имело бы вид:

1,0010001

Но в прямом коде отрицательные числа не хранят. Даже если нужно вычесть из одного положительного числа другое положительное, то второе число представляется процессором в обратном или в дополнительном коде (в зависимости от конструкции процессора) и затем складывается с первым, т.е. операция вычитания фактически в процессорах не используется. Если применяется обратный код, то все разряды, кроме знакового, инвертируются:

1,1101110

Если же применяется дополнительный код, то ещё добавляется 1 в младший разряд:

1,1101111

Действительные числа кодируются сложнее. По способу представления в разрядной сетке их называют числами с плавающей точкой. Такие числа обычно хранятся в четырехбайтовом (Single – одинарная точность) или в восьмибайтовом (Double – двойная точность) формате. В первом байте кодируются знак числа, знак его порядка и сам порядок, а в остальных байтах мантисса. Например, если бы число 19705.0001 представлялось в разрядной сетке в десятичной системе счисления, то его порядок был бы равен 5, а мантисса 0.197050001, т.е.

19705.0001 = 105 . 0.197050001

Мантисса в разрядной сетке арифметического устройства как бы прижимается к левому краю, причем ноль перед десятичной точкой и сама точка в разрядную сетку не заносятся, а только подразумеваются. Человек, имеющий дело с вычислениями, должен представлять себе, как такие числа складываются и вычитаются. Пусть к рассмотренному уже числу требуется прибавить число 0.0001. В нормализованном виде, т.е. с порядком и мантиссой, прижатой к левому краю разрядной сетки, оно будет иметь вид 10-3 . 0.1. Чтобы сложить наши числа, процессор сначала увеличит порядок второго числа до 5, сдвинув мантиссу вправо на 8 разрядов, т.е. денормализует второе число с целью выравнивания порядков. Теперь, когда это число примет вид:

105 . 0.000000001

Процессор сложит мантиссы и при необходимости нормализует результат, прижав его мантиссу к левому краю разрядной сетки с соответствующей коррекцией порядка. Критическим моментом в этой последовательности операций является денормализация меньшего слагаемого. В этот момент младшие разряды его мантиссы могут вытолкнуться из разрядной сетки, если она недостаточно велика, а это приведет к потере точности результата. Поэтому при выборе форматов накапливаемых и хранимых данных (например, в таблицах баз данных) специалист должен представлять диапазон значений признаков – параметров объектов, часто называемых атрибутами.