gpt4 book ai didi

c++ - 以 long long 数字打印位 (C++)

转载 作者:可可西里 更新时间:2023-11-01 17:39:56 25 4
gpt4 key购买 nike

我想打印一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com