我尝试使用下面的代码输出数字 115 的二进制表示,但显示的结果不正确。
我期待 0000 0000 0111 0011 但显示的是 0000 0000 0111 1111。
好像确定了一个1应该显示之后,就显示这么多了。
void Bits::displayShort(short input)
{
cout << endl;
sMask = 1000000000000000;
for (int count = 0; count < 16; count++)
{
if ((input & sMask) == 0)
{
cout << "0";
}
else
{
cout << "1";
}
if (count == 3 || count == 7 || count == 11) { cout << " "; }
sMask = sMask >> 1;
}
cout << endl << endl;
}
最佳答案
您开始于:
sMask = 1000000000000000;
这不是 2 的幂。您应该从短的最大位开始,即:
sMask = 0x8000;
或者我们可以使用一个不太容易出错的表达式:
sMask = 1 << 15;
sMask = 1 << (sizeof(input)*8 - 1);
或者在 C++14 中,我们有二进制文字,这可能是您想要的:
sMask = 0b1000000000000000;
关于c++ - 数据 C++ 的二进制表示显示的数据不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28268188/