-1

我徘徊“n << 1 == n*2 and n >> 1 == n/2”是如何工作的,但我无法通过搜索引擎得到答案。

4

2 回答 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 回答