我想打印一个 long long 数字的所有位。 当我在 main() 中执行时,一切都很好,但在 printBits() 函数(代码相同)中,第 32 位有一个额外的 1。
代码:
#include <iostream>
void printBits(long long number)
{
std::cout<<number<<" -> ";
for (char i=63; i>=0; --i)
{
std::cout<<(bool)(number&(1<<i));
}
std::cout<<std::endl;
}
int main()
{
long long number=1;
std::cout<<number<<" -> ";
for (char i=63; i>=0; --i)
{
std::cout<<(bool)(number&(1<<i));
}
std::cout<<std::endl;
printBits(number);
return 0;
}
结果是:
1 -> 0000000000000000000000000000000000000000000000000000000000000001
1 -> 0000000000000000000000000000000100000000000000000000000000000001
Process returned 0 (0x0) execution time : 0.012 s
Press any key to continue.
最佳答案
文字 1 默认为整数。将其转换为 long long 即可解决问题。
std::cout<<(bool)(number&(((long long)1)<<i));
关于c++ - 以 long long 数字打印位 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50123160/