Как сложить и вычесть 16-битные числа с половиной точности с плавающей запятой? - PullRequest
2 голосов
/ 02 октября 2011

Как мне сложить и вычесть 16-битные числа с половиной точности с плавающей запятой?

Скажите, что мне нужно сложить или вычесть:

1 10000 0000000000

1 01111 1111100000

2 дополнения формы.

Ответы [ 2 ]

1 голос
/ 02 октября 2011

Библиотека OpenEXR определяет класс с плавающей запятой с половиной точности. Это C ++, но код для приведения между родным IEEE754 float и half должен легко адаптироваться. см .: Half / half.h в качестве начала.

0 голосов
/ 02 октября 2011

Если вы используете денормализованное представление, аналогичное представлению IEEE одинарной / двойной точности, просто вычислите знак = (-1) ^ S, мантиссу как 1.M, если E! = 0, и 0.M, если E == 0 и экспонента = E - 2 ^ (n-1), работают с этими естественными представлениями и преобразуют обратно в 16-битный формат.

sign1 = -1 mantissa1 = 1.0 exponent1 = 1

sign2 = -1 мантисса2 = 1.11111 экспонента2 = 0

сумма: знак = -1 мантисса = 1.111111 экспонента = 1

Представление: 1 10000 1111110000

Естественно, это предполагает избыточное кодирование показателя степени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...