Мне интересно, как вы могли бы преобразовать дополнение двух в арифметику с фиксированной точкой к десятичному числу.Преобразование дополнения двух в арифметике с фиксированной точкой (с нумерацией битов) до десятичного числа
Итак, предположим, что мы получили эту арифметику с фиксированной точкой в двух дополнениях: 11001011
с нумерацией бит, с 2
позициями за десятичной точкой и хотим сформировать ее до десятичного числа.
Мы уже знаем, что десятичное значение будет отрицательным, потому что первый бит равен 1
.
2
позиции за десятичной точкой, поэтому у нас есть 110010 11
.
Преобразовать, что из двух в дополнении к нормальной форме (sub
по 1
, invert
):
110010 10
(я к югу от 1
здесь)
001101 01
(я перевернутой здесь)
001101
в десятичной системе счисления является 13
01
в десятичной форме 1
Так что в итоге мы добираемся до -13.1
. Это правильно или нет даже способа конвертировать это?
Ого спасибо за ответ и обмен этого метода со мной, не знаете он будет работать так же! :) –
@cnmesr: добро пожаловать - вы, вероятно, обнаружите, что это помогает просто думать о числах с фиксированной точкой как * целых числах с неявным коэффициентом масштабирования *. –