我知道这是一个非常简单的问题,但我在谷歌上找不到答案,因为它忽略了“<<”字符。如果你对我将来如何搜索这样的东西有任何建议,也会非常感激。我似乎记得它的某种比特移位或什么?但我真的不知道这意味着什么或它是如何工作的,无论它只是-1还是别的东西,好像它是我不知道为什么这个人不会只使用-1。感谢
答案 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)
<<
和>>
都是移位运营商。有关更多信息,请参阅以下内容:
答案 4 :(得分:0)
<< N
将数字值中的位向右移动N. >> N
。
http://en.wikipedia.org/wiki/Bitwise_operation#Unsigned_bit_shift_operator