在C或C ++中>> =的含义是什么?

时间:2011-11-08 21:27:19

标签: c++ c

C或C ++中>>=符号的含义是什么?它有什么特别的名字吗?

我在某些CUDA代码中有这个for循环,看起来像这样

for(int offset=blockDim.x; offset>0; offset >>=1)
{
   //Some code 
}

如何使用>>=运算符修改偏移量变量?

4 个答案:

答案 0 :(得分:16)

>>=符号是右移的赋值形式,x >>= y;x = x >> y;的缩写(除非重载意味着不同的东西)。

右移1等于除以2.该代码看起来有人不信任编译器进行最基本的优化,应该等同于:

for( int offset = blockDim.x; offset > 0; offset /= 2 ){ ... }

有关按位操作的更多信息:

http://en.wikipedia.org/wiki/Binary_shift#Bit_shifts

答案 1 :(得分:1)

字面offset = offset >> 1,即offset除以2

答案 2 :(得分:1)

这是右移的作业版本:

foo >>= 2; // shift the bits of foo right by two places and assign the result to foo

答案 3 :(得分:1)

这是一个按位向右移位的算子。它将变量的位向右移动右操作数的值。