gpt4 book ai didi

c++ - c++中与位移相关的一行代码的解释

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:56:40 26 4
gpt4 key购买 nike

我不希望有人解释以下代码的工作原理(它检查 int 是否为泛数字),因为我应该自己做。我只需要帮助具体理解第 8 行。我不知道是什么 |正在做。

private bool isPandigital(long n) {
int digits = 0;
int count = 0;
int tmp;

while (n > 0) {
tmp = digits;
digits = digits | 1 << (int)((n % 10) - 1);
if (tmp == digits) {
return false;
}

count++;
n /= 10;
}
return digits == (1 << count) - 1;
}

最佳答案

我知道其他人已经解释过它是按位或,但我想给出我自己的解释。

digits = digits | X会将 X 中的所有 1 位复制成数字。

digits = digits | 1 << Y将“设置”一位数字 - 它将设置第 Y 位。

因此,每个循环都会设置一个位。

关于c++ - c++中与位移相关的一行代码的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8767877/

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