2013-03-05 55 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瞭解更多信息和更好的解釋。