2013-03-05 99 views
-1

我徘徊如何“n < < 1 == n * 2和n >> 1 == n/2”的工作,但我不能得到与搜索引擎的答案。

+0

这是什么语言?他们看起来像是转向我。 – chessofnerd 2013-03-05 03:48:07

回答

4

诚实的回答是,你需要什么样的<<>>符被称为使用谷歌来有效地搜索一些先验知识

一个人为的答案是谷歌搜索的东西像python "<<" ">>" operator。 Google搜索字词中的引号可确保引用的字符串显示在每次点击中。第一个链接是"9.9 operator -- Standard operators as functions"。如果搜索该页面'<<'你最终找到

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操作符的工作原理与之相同,只是位移在右侧完成)。

1

他们看起来像位移向我。至少在C++中,'n >> 1'表示将所有位(1和0)移到右侧。那就是十进制6(二进制表示110)变成11(将0移动),即十进制3。也就是说,如果n = 6,那么n >> 1 == n/2将评估为真。

请参阅http://en.wikipedia.org/wiki/Arithmetic_shift了解更多信息和更好的解释。