Машинное представление чисел с фиксированной точкой 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Машинное представление чисел с фиксированной точкой



 

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

Такие числа могут быть как целыми, так и дробными. Точка мысленно фиксируется рядом с любым разрядом. Если она располагается справа от младшего бита, то число целое (рисунок 2.2), если слева от старшего – число дробное (рисунок 2.3), если двоичная запятая находится точно посередине числа, то тогда можем записывать числа, содержащие как целую, так и дробную части (рисунок 2.4).

 

 

Рисунок 2.2 – Формат 8-разрядного целого беззнакового двоичного кода

 

 

Рисунок 2.3 – Формат 8-разрядного дробного беззнакового двоичного кода

 

 

Рисунок 2.4 – Формат 8-разрядного смешанного беззнакового двоичного кода

 

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

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

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

1. Прямой код. Изменение знака производится просто, путем инверсии бита знака. Пусть 0. 0001001 2 = + 910, тогда 1. 0001001 2 = - 910. Если при сложении двух чисел в этом коде знаки совпадают, то трудностей нет.

Если знаки различаются, то необходимо:

- найти наибольшее число;

- вычесть из него меньшее;

- результату присвоить знак наибольшего слагаемого.

2. Обратный код, инверсный или дополнительный "до 1". Изменение знака производится просто – инверсией всех бит: 00001001 2 = 910, а 11110110 2 = - 910. Сложение также выполняется просто, т. к. знаковые биты можно складывать. При переносе единицы из левого (старшего) бита, она должна складываться с правым (младшим). Например: + 7 + (- 5) = 2.

 

 

Сложение в обратном коде происходит быстрее, т. к. не требуется принятие решения, как в предыдущем случае. Однако суммирование бита переноса требует дополнительных действий. Другим недостатком этого кода является представление нуля двумя способами, т. к. инверсия 0...00 равна 1...11 и сумма двух разных по знаку, но равных по значению чисел дает 1...11.Например: (00001001 = 9) + (11110110 = - 9) = 11111111. Кстати, из этого примера понятно, почему код называется дополнительным "до 1". Этих недостатков лишен дополнительный или дополнительный «до 2» код.

 

3. Дополнительный или дополнительный "до 2" код. Число с противоположным знаком находится путем инверсии исходного числа и добавлением к результату единицы. Например, найти код числа минус 9.

 

Проблемы двух нулей нет. + 0 = 00000000, - 0 = 11111111 + 1 = 00000000 (перенос из старшего бита не учитывается). Сложение производится по обычным для неотрицательных чисел правилам.

 

 

Из этого примера видно, что в каждом разряде двух равных по модулю чисел складываются две единицы, что и определило название способа. Этот метод применяется наиболее часто, и когда говорят о дополнительном коде, то имеется в виду дополнительный "до 2-х" код.

Числа с фиксированной точкой имеют свои диапазоны:

- беззнаковые числа: 0 < D < 2 n -1, где n – число разрядов:

 

 

- числа со знаком: - 2 n -1 < D < + 2 n -1 -1, где где n – число разрядов:

 

 

 



Поделиться:


Последнее изменение этой страницы: 2021-03-09; просмотров: 73; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.141.30.162 (0.006 с.)