Числовая информация, как и любая другая, хранится и обрабатывается в компьютерах в двоичной системе счисления – числа представляются в виде последовательностей нулей и единиц.
Существуют два вида чисел и два способа их представления: форма с фиксированной точкой и форма с плавающей точкой. Форма с фиксированной точкой применяется для целых чисел, форма с плавающей точкой – для вещественных (действительных) чисел.
Действительные или вещественные числа - это рациональные и иррациональные числа, у которых может быть как целая, так и дробная часть, записываемая справа от разделителя целой и дробной части.
Как разделитель при работе на компьютере раньше всегда использовалась точка, но в современных системах разделитель – точка или запятая – может настраиваться в соответствии со стандартами страны пользователя или с его привычками.
ЭВМ оперирует с числами, содержащими конечное число двоичных цифр (разрядов). Количество разрядов ограничено длиной разрядной сетки машины. Под разрядной сеткой понимается совокупность двоичных разрядов, предназначенных для хранения и обработки машинных слов (двоичных кодов).
Количество двоичных разрядов и положение запятой в разрядной сетке машины определяют такие важные характеристики ЭВМ, как точность и диапазон представляемых чисел.
Кроме бита и байта, для указания длины формата чисел используется машинное слово, полуслово и двойное слово. Двойное слово и полуслово по-разному определяются для разных систем ЭВМ. Кроме того, может использоваться понятие тетрада – 4 двоичных разряда, которыми может кодироваться, например, одна двоичная цифра.
Двоичные разряды в форматах формируются слева направо (начиная с нулевого разряда).
Целые числа в компьютере хранятся в памяти в формате с фиксированной запятой. В этом случае каждому разряду разрядной сетки соответствует всегда один и тот же разряд числа.
Целые числа без знака (положительные) – для их хранения может отводиться последовательность из 8, 16 или 32-х бит памяти. Например, максимальное 8-битное число %%A_2 = 11111111_2%% будет храниться следующим образом (прямой код):
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
---|
Максимальное значение целого неотрицательного числа достигается в случае, когда во всех ячейках хранятся единицы и равно %%2^N-1%%, где %%N%% – разрядность числа.
Для 8-разрядных целых положительных чисел оно будет равно %%2^8-1 = 255%%, для 16-разрядных %%2^{16}- 1 = 65 535%%, для 32-разрядных %%2^{32}- 1 = 4 294 967 295%%.
Целые числа со знаком (могут быть положительные и отрицательные) – при их хранении используется последовательность из 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%% (при записи чисел в памяти ЭВМ ноль и запятая отсутствуют).
Таким образом, действительные число на компьютерах хранится в двоичной системе счисления в виде:
S | P | M |
---|
где S – признак знака числа.
Поскольку размер памяти, отводимый под мантиссу и порядок, ограничен, то действительные числа представляются с некоторой погрешностью, определяемой количеством разрядов в мантиссе числа, и имеют определенный диапазон изменения, определяемый количеством разрядов в порядке числа.
Конкретные характеристики различных типов вещественных типов данных для ПК определены в стандарте IEEE-754-1985 (Institute of Electrical and Electronic Engineers), согласно которому используются 3 основных формы (см. табл. 1.3).
Особенности арифметики для чисел с плавающей точкой могут существенно влиять на результаты расчётов, вплоть до того, что погрешность может сделать невозможным получение какого-либо результата вообще, поэтому знание деталей представления в памяти таких чисел и реализации арифметики вещественных чисел является необходимым для программистов.
Тип | Размер, бит | Диапазон изменения чисел (максимум,минимум) | Точность, количество цифр в числе | Машинное %%\varepsilon%% |
single | 32 | %%3.4·10^{-38}%% — %%3.4·10^{38}%% | 6 | %%1,192·10^{-7}%% |
double | 64 | %%1.7·10^{-308}%%—%%1.7·10^{308}%% | 15 | %%2,221·10^{-16}%% |
long double | 80 | %%3.4·10^{-4932}%%—%%3.4·10^{4932}%% | 19 | %%1,084·10^{-19}%% |
Кодирование текстовой информации | Кодирование изображений |