Я получаю небольшую математическую ошибку в моей программе, которая вызывает проблемы в остальной части, и я не понимаю, почему это происходит. в этой части класса я не перегружал операторы для встроенных типов (я надеюсь). если я сделал, пожалуйста, покажи мне, где
эта функция предназначена для вычисления наименьшего числа битов, необходимого для сохранения числа, которое хранится в deque <uint8_t> value
как одно значение, поэтому 0x123456 будет храниться как {0x12, 0x34, 0x56} и выводить to integer.bits () должно быть 21
// all types here are standard, so i dont know whats going on
unsigned int bits(){
unsigned int out = value.size() << 3;
std::cout << out << " " << value.size() << " " << (value.size() << 3) << std::endl;
uint8_t top = 128;
while (!(value.front() & top)){
out--;
top >>= 1;
}
return out;
}
пока что эта часть cout
ing
8 1 8
16 2 16
...
and finally,
18 3 18
http://ideone.com/zLfz2