Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Бахты.doc
Скачиваний:
82
Добавлен:
12.02.2015
Размер:
654.34 Кб
Скачать

Данные с фиксированной точкой

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

Intel *86

Для компьютеров данной серии характерно то, что у них отсутствуют данные с фиксированной запятой, кроме, естественно, данных, представляющих целые числа. Процессор имеет команды для работы с целыми (знаковыми и беззнаковыми) числами, имеющих в памяти следующий размер: 1 байт, 2 байта, 4 байта и 8 байт.

IBM - 370

Может работать с целыми числами размером 2,4 и 8 байт. Последний случай

особый, т.к. процессор не имеет команд для их обработки. Кроме этого

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

Форма представления чисел:

Положительные целые со знаком - это 0 и все положительные числа.

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

Дополнительный код некоторого отрицательного числа представляет собой результат инвертирования (замены 1 на 0 и наоборот) каждого бита двоичного числа, плюс единица. К примеру рассмотрим десятичное число -185(10). Модуль данного числа в двоичном представлении равен 10111001(2). Сначала нужно дополнить это значение слева нулями до нужной размерности - байта, слова и т.д. В нашем случае дополнить нужно до структуры размером в 2 байта (в IBM-370 это полуслово, а в Intel - слово), так как диапазон представления знаковых чисел в байте составляет -128..127. Следующее действие – получить двоичное дополнение. Для этого все разряды двоичного числа нужно инвертировать:

0000000010111001(2) в 1111111101000110(2)

Теперь прибавляем единицу:

1111111101000110(2) + 0000000000000001(2) = 1111111101000111(2)

Результат преобразования равен 1111111101000111(2). Именно так и представляется число

-185(10) в компьютере. При работе с числами со знаком от вас наверняка потребуется умение выполнять обратное действие - имея двоичное дополнение числа, определить значение его

модуля. При этом необходимо сделать два действия:

1. Выполнить инвертирование битов двоичного дополнения.

2. К полученному двоичному числу прибавить двоичную единицу.

К примеру, определим модуль двоичного представления числа -185(10)= 1111111101000111(2):