Processing math: 22%

Материал предоставлен http://it.rfet.ru

Кодирование числовой информации

Числовая информация, как и любая другая, хранится и обрабатывается в компьютерах в двоичной системе счисления – числа представляются в виде последовательностей нулей и единиц.

Существуют два вида чисел и два способа их представления: форма с фиксированной точкой и форма с плавающей точкой. Форма с фиксированной точкой применяется для целых чисел, форма с плавающей точкой – для вещественных (действительных) чисел.

Действительные или вещественные числа - это рациональные и иррациональные числа, у которых может быть как целая, так и дробная часть, записываемая справа от разделителя целой и дробной части.

Как разделитель при работе на компьютере раньше всегда использовалась точка, но в современных системах разделитель – точка или запятая – может настраиваться в соответствии со стандартами страны пользователя или с его привычками.

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

Количество двоичных разрядов и положение запятой в разрядной сетке машины определяют такие важные характеристики ЭВМ, как точность и диапазон представляемых чисел.

Кроме бита и байта, для указания длины формата чисел используется машинное слово, полуслово и двойное слово. Двойное слово и полуслово по-разному определяются для разных систем ЭВМ. Кроме того, может использоваться понятие тетрада – 4 двоичных разряда, которыми может кодироваться, например, одна двоичная цифра.

Двоичные разряды в форматах формируются слева направо (начиная с нулевого разряда).

Кодирование целых чисел

Целые числа в компьютере хранятся в памяти в формате с фиксированной запятой. В этом случае каждому разряду разрядной сетки соответствует всегда один и тот же разряд числа.

Целые числа без знака (положительные) – для их хранения может отводиться последовательность из 8, 16 или 32-х бит памяти. Например, максимальное 8-битное число A2=111111112 будет храниться следующим образом (прямой код):

11111111

Максимальное значение целого неотрицательного числа достигается в случае, когда во всех ячейках хранятся единицы и равно 2N1, где N – разрядность числа.

Для 8-разрядных целых положительных чисел оно будет равно 281=255, для 16-разрядных 2161=65535, для 32-разрядных 2321=4294967295.

Целые числа со знаком (могут быть положительные и отрицательные) – при их хранении используется последовательность из 8, 16 или 32-х бит памяти, причем старший бит (первый слева) обозначает знак числа – 0 положительное, 1 – отрицательное. При записи чисел используется не прямой, а дополнительный код двоичного числа равный 2^N – A, где N – разрядность числа, A – прямой код двоичного числа.

Дополнительным называется код, в котором для положительного числа в знаковом разряде пишется “0”, в цифровых – модуль числа, а для отрицательного в знаковом разряде пишется “1”, в цифровых – дополнение числа до единицы (инвертирование цифр).

Например, число -1 в 8-разрядном двоичном коде выглядит, как 11111111, -2 – как 11111110 и т. д.

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

Таким образом, при использовании 8-ми разрядов для хранения целых чисел со знаком диапазон их изменения составит от – 128 до 127, если использовать 16 разрядов – от -32 768 до 32 767, 32 разряда – от -2 147 483 648 до 2 147 483 647, что следует учитывать при работе с целыми типами данных при программировании и работе с базами данных.

Кодирование вещественных чисел

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

X = \pm M · N^P;

где M – мантисса (дробная часть), N – основание системы счисления, а P – порядок числа.

Для десятичной системы счисления нормальная форма X = \pm M · 10^P, для двоичной X = \pm M · 2^P.

Например, число 22.22_{10} в таком виде будет выглядеть, как +0,2222·10^2 (при записи чисел в памяти ЭВМ ноль и запятая отсутствуют).

Таким образом, действительные число на компьютерах хранится в двоичной системе счисления в виде:

SP      M             

где S – признак знака числа.

Поскольку размер памяти, отводимый под мантиссу и порядок, ограничен, то действительные числа представляются с некоторой погрешностью, определяемой количеством разрядов в мантиссе числа, и имеют определенный диапазон изменения, определяемый количеством разрядов в порядке числа.

Конкретные характеристики различных типов вещественных типов данных для ПК определены в стандарте IEEE-754-1985 (Institute of Electrical and Electronic Engineers), согласно которому используются 3 основных формы (см. табл. 1.3).

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

Таблица 1.3. Данные с плавающей точкой по стандарту IEEE-754-1985

ТипРазмер, битДиапазон изменения чисел (максимум,минимум)Точность, количество цифр в числе  Машинное \varepsilon
single323.4·10^{-38}3.4·10^{38}61,192·10^{-7}
double641.7·10^{-308}1.7·10^{308}152,221·10^{-16}
long double803.4·10^{-4932}3.4·10^{4932}191,084·10^{-19}
Кодирование текстовой информацииКодирование изображений