Я пытаюсь написать очень эффективный класс 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);
...
}
Мой вопрос: Этоневозможно?Есть ли какой-нибудь совет, который делает то, что я хочу с лучшей производительностью?