我在我的程序中得到一个轻微的数学错误,这导致其余部分出现问题,我不明白为什么会发生这种情况.在这部分类中,我没有为内置类型重载运算符(我希望).如果我这样做,请告诉我在哪里
此函数用于计算存储数字所需的最少位数,该数字存储在deque <uint8_t> value
一个值中,因此0x123456将存储为{0x12,0x34,0x56},输出将存储为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;
}
Run Code Online (Sandbox Code Playgroud)
然而,这部分正在cout
发挥作用
8 1 8
16 2 16
...
and finally,
18 3 18
Run Code Online (Sandbox Code Playgroud)
Oli*_*rth 11
3*8
是24
,并且以十六进制表示0x18
.你std::hex
的代码分散了...