"在Linux内核源代码中,">>="代表什么意思?"

3

在 Linux 内核源代码中,我发现以下代码:

    h++;
    pending >>= 1;

这是__do_softirq(void)的一部分。但是">>="是什么意思?为什么不是我记得的">>"?

2个回答

16

它只是这样做

pending = pending >>1;

简单来说,它将无符号整数除以2。

这与 +=, /=等语句相同。

它不仅是 pending >>1,因为这样不会将移位操作的结果存储在变量中。


4
它将无符号整数除以2。C语言没有指定对有符号整数会发生什么。在这种情况下最好使用/=运算符。 - Doug Currie
是的,我认为现在除以二的这种写法并不实用,因为所有编译器都会对无符号整数的/ = 2进行优化。你应该主要在使用int存储位时使用它。 - Denys Séguret
@DougCurrie 您的意思是对于一个有符号整数。 - ouah
1
感谢您对“=”的详细解释!我学到了。 - Tom Xue

2

这等同于

pending = pending >> 1;

这个操作将会对 pending 变量中的位进行右移,相当于将一个无符号整数除以2。 >> 和 << 是位移操作符,与 = 结合使用的效果类似于 += 和 /= 操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接