Мне нужно преобразовать C/C++ double в 64-битное дополнение до двух, где точка Radix находится в битовом номере 19 (включительно).
Это означает, что для формата, который я хочу преобразовать в
- 0x0000 0000 0010 0000 это число 1
- 0xFFFF FFFF FFF0 0000 это число -1
- 0x0000 0000 0000 0001 is 0.95 x 10^-6
- 0xFFFF FFFF FFFF FFFF равен -0,95 x 10^-6
До сих пор я думал об использовании функции modf из стандартной библиотеки C, но на самом деле это не покрывает моих потребностей. Я также просмотрел некоторые классы преобразования типов в Boost, но и там не нашел подходящего решения. Кто-нибудь знает библиотеку или простой способ сделать это преобразование? Может быть, кто-то, более знакомый с Boost, может указать мне правильное направление.
Если это поможет, вот некоторая документация о том, как хранится.
Редактировать:
У меня есть дополнительный вопрос, это действительно для моего собственного интереса. Что такое «Радикс»? Здесь это что-то вроде десятичной точки. Но единственный другой раз, когда я слышал термин Radix, был, когда я изучал дискретное быстрое преобразование Фурье. Если я правильно помню, метод Radix-II является быстрым, потому что для вычисления ДПФ требуется меньше умножений.