我徘徊“n << 1 == n*2 and n >> 1 == n/2”是如何工作的,但我无法通过搜索引擎得到答案。
问问题
67 次
2 回答
4
诚实的答案是,您需要先验了解<<
和>>
运算符的调用方式,才能有效地使用 Google 进行搜索。
一个人为的答案是谷歌搜索类似的东西python "<<" ">>" operator
。Google 搜索词中的引号可确保引用的字符串出现在每次匹配中。
第一个链接是“9.9 运算符——作为函数的标准运算符”。如果您搜索该页面,'<<'
您最终会找到
Left Shift a << b lshift(a, b)
Right Shift a >> b rshift(a, b)
这会引导您(通过搜索lshift
)找到定义(在同一页面上):
operator.lshift(a, b)
operator.__lshift__(a, b)
Return a shifted left by b.
然而,这也可能不是那么清楚。这意味着 的二进制表示a
被移位到左边的b
位置并返回结果值。( >>
, rshift 运算符的工作方式相同,只是位移是向右完成的。)
于 2013-03-05T04:00:35.123 回答
1
在我看来,它们就像位移。至少在 C++ 中,'n>>1' 意味着将所有位(1 和 0)向右移动。即十进制 6(二进制表示 110)变为 11(将 0 移开),即十进制 3。也就是说,如果 n=6,则 n>>1==n/2 将评估为真。
有关更多信息和更好的解释,请参阅http://en.wikipedia.org/wiki/Arithmetic_shift 。
于 2013-03-05T03:55:35.030 回答