Представление данных в компьютерах

Компьютеры оперируют с данными трех основных типов: числами, строками символов и логическими значениями. Отметим, что адреса относятся к типу числовых данных.

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

Целое двоичное число имеет следующий формат:

(3.1)
± Цифровые разряды
n n–1 0

 
 
.

 


Разряд с номером n является знаком числа: знак плюс кодируется цифрой 0, знак минус – цифрой 1. Разряды от (n-1) до 0 являются цифровыми. Запятая фиксируется после младшего разряда с номером 0. Формат (3.1) обеспечивает представление целых значений в диапазоне [–(2n–1); +(2n–1)]. Отсюда видно, что число цифровых разрядов процессора определяет диапазон значений, которые могут быть представлены в формате (3.1). Увеличение количества цифровых разрядов процессора на единицу расширяет диапазон представления в два раза.

Выполнение операций над целыми числами, изображаемыми словами фиксированной длины, имеет следующие особенности. Операции сложения и вычитания определены только в том случае, если результат может быть представлен в n цифровых разрядах, т.е. если результат |C |<2n. В противном случае говорят, что результат переполняет разрядную сетку процессора. Если |C |≥2n, в процессоре формируется признак переполнения, используемый для управления ходом вычислительного процесса, например для прекращения вычислений. Произведение состоит из 2n цифровых разрядов. Поскольку результат должен представляться n-разрядным значением, используется следующий способ формирования результата:

2n-1 n n–1 0

           
 
   
.
 
 
   

 

 


Старшие разряды Младшие разряды

Старшие n разрядов произведения можно отбросить, если они равны нулю, т.е. когда произведение |AB|≥2n рассматривается как переполнение разрядной сетки. Результат деления целых чисел A и B – целая часть от деления A на B, т.е. C=A (mod B). Результат определен при любых значениях A и B, кроме B=0. последний случай фиксируется как переполнение при делении.

В компьютерах используются целые числа с длиной 16, 32 и 64 двоичных разряда. Кроме того в компьютерах общего применения могут использоваться целые числа без знака, количество двоичных разрядов в которых равно 8, 16, 32 и 64 двоичных разряда.

В настоящее время числа с плавающей запятой (точкой) строятся на основе стандарта IEEE 754, определяющего три формата чисел (рис 3.1): с одинарной точностью (32 бита), с двойной точностью (64 бита) и с повышенной точностью (80 битов). Все форматы начинаются со знакового бита числа: 0 определяет положительное число, а 1 – отрицательное. Затем указывается значение порядка: для чисел с одинарной точностью порядок указывается со смещением 127, а для чисел с двойной и повышенной точностью – со смещением 1023. когда порядок указывается со смещением, значение порядка в числе с одинарной точностью от 0 до 126 соответствуют отрицательному порядку, значение 127 – нулевому порядку, а значения от 128 до 255 – положительному порядку числа. Стандарт IEEE 754 определяет в качестве основания для показателя число 2. Однако в компьютерах могут использоваться в качестве основания числа 2, 4, 8 и 16. Чем больше длина порядка и чем больше основание порядка, тем шире диапазон значений, представляемых числами с плавающей запятой. За порядком числа следует мантисса, длина которой определяет точность представления действительных чисел. Чем больше длина мантиссы, тем выше точность представления значений. В рассматриваемом стандарте значение 1 в старшем разряде нормализованной мантиссы хранится в неявном виде слева от запятой (см. рис. 3.1). Поэтому все нормализованные числа имеют значения 1 и M<2, где M – мантисса числа. Стандарт IEEE 754 определяет порядок представления и способы выполнения операций над ненормализованными числами и бесконечно большими значениями, которые мы не будем рассматривать.

Числовые характеристики стандарта IEEE 754 для чисел с плавающей запятой представлены в табл. 3.2. Как видно из таблицы, нормализованные числа с одинарной точностью представляют значения в диапазоне от 10–38 до 10+38, а при двойной точности – в диапазоне от 10–308 до 10+308.

Таблица 3.2. Характеристики чисел с плавающей запятой стандарта IEEE 754

Параметр Одинарная точность Двойная точность
Количество битов
Количество битов в порядке
Количество битов в мантиссе
Смещение порядка
Значение порядка –126 до +127 –1022 до +1023
Минимальное нормализованное число 2–126 2–1022
Максимальное нормализованное число 2128 21024
Диапазон десятичных чисел 10–38 до 1038 10–308 до 10308
Минимальное ненормализованное число 10–45 10–324

Текстовые строки. Значительную долю информации, обрабатываемой компьютером, могут составлять текстовые строки – строки символов некоторого алфавита. Типичным примером обработки текстовой информации является трансляция программ, записанных на языках программирования, в машинные программы, представляемые в терминах команд. Отдельный символ (буква, цифра или знак) кодируется байтом, что обеспечивает работу с алфавитами, содержащими до 28 = 256 различных символов. Строка символов представляет собой последовательность байтов следующего вида:

Таблица 3.2. Характеристики чисел с плавающей запятой стандарта IEEE 754

Параметр Одинарная точность Двойная точность
Количество битов
Количество битов в порядке
Количество битов в мантиссе
Смещение порядка
Значения порядка –126 до +127 –1022 до +1023
Минимальное нормализованное число 2-126 2-1022
Максимальное нормализованное число ~2128 ~21024
Диапазон десятичных чисел 10-38 до 1038 10-308 до 10308
Минимальное ненормализованное число ~10-45 ~10-324

Нормализованные числа с одинарной точностью представляют значения в диапазоне от 10-38 до 1038, а при двойной точности - в диапазоне от 10-308 до 10308.

Текстовые строки. Значительную долю информации, обрабатываемой компьютером, могут составлять текстовые строки – строки символов некоторого алфавита. Типичным примером обработки текстовой информации является трансляция программ, записанных на языках программирования, в машинные программы, представляемые в терминах команд. Отдельный символ (буква, цифра или знак) кодируется байтом, что обеспечивает работу с алфавитами, содержащими до 28=256 различных символов. Строка символов представляет собой последовательность байтов следующего вида:

 
 

 

 


. . .
. . .
. . .
. . .
A+0
Здесь S – 8-разрядный двоичный код символа. Таким образом, строка символов представляется в компьютере полем переменной длины. Обычно длина поля может изменяться от 1 до 256 байт. Использование специального формата (3.2) для представления текстовой информации позволяет упростить программирование процедур, обрабатывающих тексты, и уменьшить затраты времени на обработку текстов. Можно представлять текстовые строки последовательностью машинных слов, в которых размещаются символы S1, …, SL, составляющие строку (рис. 3.2). В этом случае строка идентифицируется адресом А первого слова, с которого она начинается, и числом байтов, составляющих строку. В общем случае последнее слово заполняется символами неполностью, и при обработке строки для выделения последнего символа SL приходится использовать соответствующие приемы программирования, т.е. вводить в процедуру обработки строк дополнительные команды. Это увеличивает длину программ и время обработки текстов. Чтобы исключить эти негативные явления, текстовая информация представляется в формате (3.2) и в систему команд вводятся специальные операции для обработки текстовых строк.


Логические значения. Переменные, принимающие одно из двух значений «ложь» или «истина», называются булевыми (логическими) переменными. Значения «ложь» и «истина» принято кодировать цифрами 0 и 1 соответственно, т. е. булева переменная представляется битом информации.

 

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

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