Представление чисел в ЭВМ

В ЭВМ применяются две формы представления чисел:

  • • естественная форма, или форма с фиксированной запятой (точкой), — ФЗ (ФТ);
  • • нормальная форма, или форма с плавающей запятой (точкой), — ПЗ (ПТ).

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

Например, пусть числа представлены в десятичной системе счисления и имеют пять разрядов в целой части числа (до запятой) и пять в дробной части (после запятой). Числа, записанные в такую разрядную сетку, имеют вид +00721.35500;

+00000.00328.

Эта форма наиболее проста, естественна, но имеет небольшой диапазон представления чисел и потому чаще всего неприемлема при вычислениях.

В памяти ЭВМ числа с фиксированной точкой хранятся в трех форматах:

  • а) полуслово — это обычно 16 бит или 2 байта;
  • б) слово — 32 бита или 4 байта;
  • в) двойное слово — 64 бита или 8 байтов.

Отрицательные числа с ФТ записываются в разрядную сетку

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

Плавающая запятая (точка). В форме представления с плавающей запятой (точкой) число изображается в виде двух групп цифр:

  • • мантисса;
  • • порядок.

При этом абсолютная величина мантиссы должна быть меньше 1, а порядок — целым числом.

Например, приведенные ранее числа в нормальной форме запишутся следующим образом:

+0,721355 х 103;

+0,328 х 10"3.

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

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

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

Ю,3510 = 0,Ю3510 х 10+2;

0,000072458 = 0,72458 х 8"4;

F5C,9B16 = 0,F5C9B16x 16+3.

В памяти ЭВМ числа с ПТ хранятся в двух форматах:

  • • слово — 32 бита или 4 байта;
  • • двойное слово — 64 бита или 8 байт.

Алгебраическое представление двоичных чисел. Знак числа обычно кодируется двоичной цифрой, при этом:

  • • код 0 означает знак «+» (плюс);
  • • код 1 — знак «-» (минус).

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

  • • обратный;
  • • дополнительный.

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

Обратный код числа N обозначим [7V]o6p.

Пусть N= ах, а2, а3, ..., ат и а обозначает инверсию а, т. е. если а =1, то 2 = 0, и наоборот. Тогда

при N>0, [ЛПобр = 0, ах2 , а3, ... , ат;

при N< 0, [N]o6p = 1, а2, а3, ...,ат;

при N= 0 имеет место неоднозначность [0]обр = 0,00 ... 0 = 1,11... 1.

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

Например,

для N= 1011, [N]oQp = 0,1011;

для N= -1011, [АПобр = 1,0100.

Дополнительный код числа N обозначим [А^]доп.

Пусть, как и выше, N = ах, а2, а2, ..., ат и а обозначает величину, обратную а (инверсию а), т. е. если а = 1, то а = 0, и наоборот. Тогда

при N> О, [N]доп = 0, ах, а2, а3, ..., ат;

при N< О, [Л^]доп = 1 иа23, ..., ат + 0,00... 1.

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

Например,

для N= 1011, [ЛПдоп = 0,1011;

для N= -1100, [ЛПдоп= 1,0100;

для 7V=-0000, [N]aon = 10,0000 = 0,0000 (1 исчезает). Неоднозначности в изображении 0 нет.

Эмпирическое правило: для получения дополнительного кода отрицательного числа необходимо все символы этого числа инвертировать, кроме последней (младшей) единицы и тех нулей, которые за ней следуют.

Типы, структуры, форматы данных и документов в информационных системах

Типы данных — это совокупность соглашений о программно-аппаратурной форме представления и обработки, а также ввода, контроля и вывода элементарных данных.

Структуры данных — способы композиции простых данных в агрегаты и операции над ними.

Форматы файлов — представление информации на уровне взаимодействия операционной системы с прикладными программами.

Типы данных (табл. 1.7). Ранние ЯП, а точнее, системы программирования (СП) — Фортран, Алгол, будучи ориентированными исключительно на вычисления, не поддерживали развитых систем типов и структур данных.

Таблица 1.7. Типы и структуры данных в некоторых системах программирования и управления данными

Данные

Система - язык программирования, СУБД, ИПС

Algol

Cobol

PL/1

FoxBase/

Clipper

Oracle/ SQL

Тип данных

Целое короткое (2 байта)

-

-

-

-

Smalllnt

Целое норм. (4 байта)

Integer

Computational

Int

N(x)

Int

Целое длинн. (8 байт)

-

-

Double

-

Biglnt

Действительное норм. (4 байта)

Real

Computational

Float

N(x.y)

Float Real

Действ, двойное (8 байт)

-

-

-

-

Float Double

Двоичное

-

-

Binary

-

Binary, VarBinary

Десятичное упакованное (2 цифры на байт)

-

PIC(9)

Decimal

-

-

Десятичное распакованное (1 цифра на байт)

-

PIC(X)

-

N(x)

-

Логическое

Boolean

-

+

Logical

Bit

Символьное

-

PIC(A)

Char

C(x)

Char, VarChar

Длинный текстовый

или бинарный объект (BLOB)

-

-

-

Memo

VarGraphic, Text, Image, VarChar(max), VarBinary(max)

Дата

-

-

-

Date

Date

Время

-

-

-

-

Time

Структуры данных

Массивы

Array

-

Dim

Dimention

-

Записи (структуры)

-

+

+

+

+

Множественные (векторные) поля записи

-

-

-

-

-

Групповые поля записи

-

+

+

-

-

Повторяющиеся группы в записи

-

-

-

-

-

Текстовые поля (параграфы, предложения, слова)

-

-

-

-

-

В Алголе символьные величины и переменные вообще не предусматривались, в некоторых реализациях строки (символы в апострофах) могли встречаться только в операторах печати данных.

Типы числовых данных Алгола — integer (целое число), real (действительное) — различаются диапазонами изменения, внутренними представлениями и применяемыми командами процессора ЭВМ (соответственно арифметика с фиксированной и плавающей точкой). Нечисловые данные представлены типом boolean — логические, имеющие диапазон значений {true, false}.

Позже появившиеся ЯП (СП) Кобол, ПЛ/1, Паскаль предусматривают новые типы данных:

  • • символьные (цифры, буквы, знаки препинания и пр.);
  • • числовые символьные для вывода;
  • • числовые двоичные для вычислений;
  • • числовые десятичные (цифры 0—9) для вывода и вычислений.

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

Уместно привести пример представления числовой информации в различных перечисленных формах. Пусть задано число 13510 = 2078 = 8716 = 1000001112:

  • • внутренняя стандартная форма — тип binary — представления для обработки в двоичной арифметике сохраняется (1000001112). Объем — 1 байт, 8 двоичных разрядов;
  • • внутренняя форма двоично-десятичного — тип decimal — представления: каждый разряд десятичного числа представляется двоично-десятичной (4 бита) комбинацией. Представление 135 есть 001 011 1012. Объем — 2,5 байта, 12 двоичных разрядов;
  • • символьное представление (для вывода) — тип alphabetic — каждый разряд представляется байтом в соответствии с кодом ASCII.

Представление 135 есть 00110001 00110011 001101012. Объем — 3 байта.

Появление СУБД и СП для разработки ИС приводит к появлению новых типов данных:

  • дата и время;
  • бинарные (BLOB — Binary Large Object) и текстовые объекты без внутренней структуры (интерпретация возлагается на прикладные программы).

Понятие типа данных ассоциируется также с допустимыми значениями переменной и операциями над ними, например, данные типа время (чч:ММ:СС) или дата (гг/мм/дд) предполагают определенные диапазоны значений каждого из разрядов, а также машинные или эмулируемые операции (сложение/вычита- ние дат и/или моментов времени). Основной причиной «проблемы 2000 года» являлась не столько двухразрядная запись года в базах данных, сколько встроенные в огромное количество программ (часто недокументированных) операции над данными типа DATE — гг/мм/дд.

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

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

С появление СУБД и АИПС возникают новые разновидности структур:

  • • множественные поля данных (рис. 1.2, е)
  • • периодические групповые поля (рис. 1.2, ж)
  • • текстовые объекты (документы), имеющие иерархическую структуру (документ, сегмент, предложение, слово) — рис. 1.2, з.
Структуры данных

Рис. 1.2. Структуры данных:

а — одномерный массив (символическое изображение); б — графическое изображение; в — двумерный массив (матрица); г — запись (структура, агрегат данных); д — массив в записи (множественное поле записи); е — массив агрегатов; ж — массив агрегатов в записи (повторяющаяся группа); з — документ библиографической БД INIS [10]

Структуры данных (окончание)

Рис. 1.2. Структуры данных (окончание)

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >