2016-09-14 3 views
1

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

Итак, предположим, что мы получили эту арифметику с фиксированной точкой в ​​двух дополнениях: 11001011 с нумерацией бит, с 2 позициями за десятичной точкой и хотим сформировать ее до десятичного числа.

Мы уже знаем, что десятичное значение будет отрицательным, потому что первый бит равен 1.

2 позиции за десятичной точкой, поэтому у нас есть 110010 11.

Преобразовать, что из двух в дополнении к нормальной форме (sub по 1, invert):

110010 10 (я к югу от 1 здесь)

001101 01 (я перевернутой здесь)

001101 в десятичной системе счисления является 13

01 в десятичной форме 1

Так что в итоге мы добираемся до -13.1. Это правильно или нет даже способа конвертировать это?

ответ

1

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

Так для примера, где у вас есть число 6,2 неподвижной точки: 110010 10:

Преобразовать как целое:

11001010 = -54 

Разделить на масштабном коэффициенте = 2^2:

-54/4 = -13.5 

Обратите внимание, что дробная часть всегда без знака. (Вы, вероятно, видите теперь, что 10 даст вам + 0.5 для дробной части, т.е. 00 = 0.0, 01 = +0.25, 10 = +0.5, 11 = +0.75.)

+0

Ого спасибо за ответ и обмен этого метода со мной, не знаете он будет работать так же! :) –

+0

@cnmesr: добро пожаловать - вы, вероятно, обнаружите, что это помогает просто думать о числах с фиксированной точкой как * целых числах с неявным коэффициентом масштабирования *. –

 Смежные вопросы

  • Нет связанных вопросов^_^