为什么这段代码没有为n = 1000000000000
预期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
.