在C或C ++中>> =是什么意思?

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

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

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

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

>>=符号是右移的赋值forms,即x >>= y;x = 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

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

这是右移的分配版本:

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

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