num>> 1在c ++中是什么意思?

时间:2011-12-31 05:12:25

标签: c++

我知道这是一个非常简单的问题,但我在谷歌上找不到答案,因为它忽略了“<<”字符。如果你对我将来如何搜索这样的东西有任何建议,也会非常感激。我似乎记得它的某种比特移位或什么?但我真的不知道这意味着什么或它是如何工作的,无论它只是-1还是别的东西,好像它是我不知道为什么这个人不会只使用-1。感谢

5 个答案:

答案 0 :(得分:8)

它('>>')表示左手操作数是整数类型的上下文中的“右移”。对于无符号类型,uvalue >> 1相当于除以2并截断该值;它丢弃最低有效位,每隔一位向下移动一位,并在最高有效位中插入0。对于签名类型和正值,行为是相同的;如果值为负,则行为最好是实现定义的。

如果左侧操作数是输入流,那么它是一个输入操作(但您不能输入1之类的文字,但可以输入{{1}等变量})。

类似地,'l'表示左侧操作数是整数类型的上下文中的“左移”,它表示当左侧操作数是输出流时的输出操作。

当然,如果左侧操作数是一个类,那么操作意味着类定义了要表示的操作。 I / O流是“类定义操作意味着什么”的特定特例。

注意,如果LH操作数是N位的整数(如果其类型短于<<则被提升),那么它仅在0到N-1之间的RH值上移位是有效的;任何更大或更小的班次都会产生不确定的行为特别注意,移位N是未定义的行为。

关于类和I / O流的注释不适用于C,但操作数都是整数,C中的行为与C ++中的相同。

答案 1 :(得分:1)

这是num一个二进制右移。有一个非常好的tutorial here

答案 2 :(得分:1)

有助于: int m=16; //(10000) n=m>>1; //n=(01000)导致n=8十进制。

答案 3 :(得分:0)

<<>>都是移位运营商。有关更多信息,请参阅以下内容:

http://msdn.microsoft.com/en-us/library/336xbhcz.aspx

答案 4 :(得分:0)

<< N将数字值中的位向右移动N. >> N

http://en.wikipedia.org/wiki/Bitwise_operation#Unsigned_bit_shift_operator