我刚刚看到以下代码,我看到num
每个循环减少了一半,但我不能真诚地弄清楚这意味着什么。
int n1 = n;
for (int num = 16; num != 0; num >>= 1)
{
if ((n1 & num) != 0)
{
dOSomeStuff();
}
}
感谢。
答案 0 :(得分:3)
答案 1 :(得分:1)
这意味着'right-shift-and-assign',与+=
相同,意味着'添加和分配',-=
表示'减去和分配& #39;等。
例如:
int i = 123; // i = 123 binary 01111011
i >>= 1; // i = 61 binary 00111101
i >>= 1; // i = 30 binary 00011110
i >>= 1; // i = 15 binary 00001111
答案 2 :(得分:0)
答案 3 :(得分:0)
表示向右移动1并且分配,16是10000二进制,每次调用该段代码时,数字基本上除以2. 10000(16)变为01000(8)
答案 4 :(得分:0)
操作员将值向右移位。在您的代码中,num将具有以下序列:
16 // 10000二进制
8 // 01000
4 // 00100
2 // 00010
1 // 00001