unsigned long long n = 0;
for (int i = 0; i <= 64; i+=2)
n |= 1ULL << i; //WHAT DOES THIS DO? AH!
我正在努力思考这段代码的第三行实际上做了什么。有人请帮忙解决这个问题!
最佳答案
该行设置 n 的第 ith 位。
-
1ULL
是整数 1,类型为 unsigned long long。 -
<<
是位移运算符。1ULL << i
等于 2i,或二进制:100...0
有 i 个零。 -
n |= x;
是复合赋值运算符。类似于写n = n | x;
. - 接线员
|
是按位或运算符。
维基百科有一个示例显示按位或运算符在一般情况下的工作原理:
0101 (decimal 5)
OR 0011 (decimal 3)
= 0111 (decimal 7)
相关
关于混淆按位运算 |和<<,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11038005/