gpt4 book ai didi

c++ - 为什么按位运算符在使用与整数中提供的位数相同的位数计算可能的最大范围时会产生错误

转载 作者:太空宇宙 更新时间:2023-11-03 10:37:40 26 4
gpt4 key购买 nike

为什么这段代码没有给出 n = 1000000000000 的期望值 Expected value = 1099511627775虽然代码给出了 255

long long now = n, count = 0, len = 0;
while (now >= 1) {
count++;
now /= 2;
}
len = (1 << count) - 1;
cout << len;

最佳答案

1 << count常量 1是一个 int不是long long .
然后类次溢出。
你应该使用 1ll << count .

关于c++ - 为什么按位运算符在使用与整数中提供的位数相同的位数计算可能的最大范围时会产生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57730967/

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