2013-02-19 46 views
0

我想將Python實用程序翻譯成Ruby。 問題是,不太瞭解python。特定的Python如果構造

效用的片段包括以下if條件:

if bits&0x10==0x10: 

這是什麼意思?位是一個變量。它是某種「縮短」「& &」,意思是如果位不爲零的值爲0x10?謝謝!

+1

[位 「與」(http://en.wikipedia.org/wiki/Bitwise_operation ) – JBernardo 2013-02-19 17:02:19

+0

順便說一下,Python中沒有'&&','bits和0x10 == 0x10'會做很大的改變。 – geoffspear 2013-02-19 17:06:57

回答

5

如果變量位的第5位被設置

它是如何工作

  • &是按位安定它實際上檢查。

  • 0x10的是二進制值的十六進制0b10000

  • 所以,你做什麼都在bits0b10000

而且逐位安定,Ruby的支持對比特明智的測試類似的結構

if (bits&0x10) 
    ...... 
end 

請注意,如Tim提到的,您的Python構造可以簡化爲

if bits&0x10: 
    ....... 
+3

...並可以縮短爲'if bits&0x10:'... – 2013-02-19 17:04:42

+0

thx,這有助於。並感謝與紅寶石提示 – Dakkar 2013-02-19 17:17:19

6

單獨的&是按位和操作。即,bits與0x10的逐位比較,並且如果兩者都具有一個位的1該位置上的結果是1該位置,否則爲0。

基本上,由於爲0x10是二進制10000,這是檢查是否bits中的第5位設置爲1

我不太瞭解ruby,但我的猜測是,它應該有一個按位運算符,它也可能是&。因此,這段代碼最終會在ruby中完全相同。

編輯:根據Ruby Operators頁面。在「Ruby Bitwise Operators」部分,&也是一個按位和紅寶石,所以你可以保持這種狀態在你的實用程序的翻譯,它應該,確實,工作。