2016-09-25 293 views
-5

我浏览互联网,并知道它是一个复合赋值运算符。但它是如何工作的?a >> = b是什么意思?

我用this链接来了解定义,但我找不到这个语法的确切实现。

+2

移向左b乘以。等于整数除以2 ** b。 –

+0

它的'a = a >> b'即移位'a'右'b'次 –

+0

不能得到它。请用示例 –

回答

0

在您提供的link,存在使用复合赋值运算符的代码片段:

a+=2; // equivalent to a=a+2

>>=运营商也采用类似的方式:

a>>=2; // equivalent to a=a>>2

>>被称为(右)Shift运算符,并且将源操作数的二进制表示向右移动一定的位数。例如,让我们有这样的代码片段:

int a=12; 
cout<<a<<endl; 
a>>=2; 
cout<<a<<endl; 

代码段的输出,当使用C执行++编译器将是:

12 
3 

到底发生是这样的:a具有价值为12(以二进制表示)(仅显示最后6位)001100. a>>=2;a中的位向右移2位,并将新值分配给a,因此新位位置变为000011,即3在十进制中,因此a获得3的值,并且res ulting输出。

希望这可以澄清混淆。

+0

将答案都是一样的'A = 13,>> = 2'和'A = 12,>> = 2' ?? –

+0

是的,最后两位获得移出一些,因此你得到相同的答案(即3),你能想到的权通过移动'ñ '倍由2^N做源操作数的整数除法,因此,13/4 = 12/4 = 3。 –

0

>>是右移操作符。

正如您所提到>>=是一个复合赋值运算符。复合赋值使用运算符修改变量,并将新值赋给自己。

a >>= b相当于a = a >> b 即,a右移b次并分配回a。

例如,

int a = 8, b = 2; 
a >>= b; // right shift by 2 i.e. divide by 2 x b times. 
cout << a; // prints value of 2