Есть ли способ справиться со строкой битов в C ++ - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь написать очень эффективный класс C ++, который определяет новый тип с плавающей точкой с гораздо большей точностью, чем примитивные типы данных.См. Мой предыдущий пост для получения дополнительной информации.

Для начала я использую статическое распределение в моем hp_float.hpp:

class hp_float {
private:
  unsigned char buf[48];
public:
  hp_float();
  hp_float operator+(const hp_float& h);
};

Моя проблема в том, что, в конце концов, вДля реализации этого operator+ мне нужно будет использовать побитовые операции, включая << и >>.Я видел, что это может быть сложно с этими буферами, как показано в этом SO post .

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

hp_float hp_float::operator+(const hp_float& h) {
  [type???] this_sign = buf >> (48*8-1);

  ...
}

Мой вопрос: Этоневозможно?Есть ли какой-нибудь совет, который делает то, что я хочу с лучшей производительностью?

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