Арифметика с только 16-битными подписанными словами
-
26-10-2019 - |
Вопрос
Я пытаюсь выполнить арифметику, используя только 16-битные подписанные слова. Мне нужно иметь возможность выполнять добавление, умножение и т. Д.
В качестве примера мне нужно вычесть два значения данных, ниже приведен пример: 7269.554688-46,8 или 4385.6616210938 + 32.2
Однако эти значения должны быть преобразованы в 16-битные слова, а затем можно выполнить вычитание, умножение или добавление.
Я также мог бы использовать несколько 16-битных слов для хранения одного значения.
Как я бы выполнял такие операции, как сложение, вычитание и умножение, и как я бы соответствующим образом преобразовал все свои входные значения, чтобы десятичные точки всегда выстраивались в соответствие правильно?
Решение
Какую платформу вы кодируете? Чтобы выполнить операции, которые вы дали в качестве примера, вам понадобится блок плавающей запятой. Номера с плавающей запятой обычно представлены через 32 бита или 64 бита, редко 16 бит.
Если у вас нет одного, и все, что у вас есть, это простые операции на 16 -битных целых числах, вы можете подражать плавающему подразделению, но это не тривиальная задача.