C++中的3×8=18
我的程序中出现了一个小的数学错误,这导致了程序其余部分的问题,我不明白为什么会发生这种情况。在类的这一部分中,我没有为我希望的内置类型重载运算符。如果有,请告诉我在哪里 此函数用于计算存储数字所需的最少位数,该位数作为一个值存储在deque值中,因此0x123456将存储为{0x12、0x34、0x56},integer.bits的输出应为21C++中的3×8=18,c++,math,C++,Math,我的程序中出现了一个小的数学错误,这导致了程序其余部分的问题,我不明白为什么会发生这种情况。在类的这一部分中,我没有为我希望的内置类型重载运算符。如果有,请告诉我在哪里 此函数用于计算存储数字所需的最少位数,该位数作为一个值存储在deque值中,因此0x123456将存储为{0x12、0x34、0x56},integer.bits的输出应为21 // all types here are standard, so i dont know whats going on unsign
// 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;
}
3*8是24,十六进制是0x18。您的代码中分散了std::hex…有人将您的流更改为hex,并将24位十进制打印为18位十六进制。可能更糟-可能是基数3;今天的Boost库:。你在做一个整数类:@larsmans:听起来像是一个真正有用的小库!感谢链接。。。
8 1 8
16 2 16
...
and finally,
18 3 18