我想將Python實用程序翻譯成Ruby。 問題是,不太瞭解python。特定的Python如果構造
效用的片段包括以下if
條件:
if bits&0x10==0x10:
這是什麼意思?位是一個變量。它是某種「縮短」「& &」,意思是如果位不爲零和的值爲0x10?謝謝!
我想將Python實用程序翻譯成Ruby。 問題是,不太瞭解python。特定的Python如果構造
效用的片段包括以下if
條件:
if bits&0x10==0x10:
這是什麼意思?位是一個變量。它是某種「縮短」「& &」,意思是如果位不爲零和的值爲0x10?謝謝!
如果變量位的第5位被設置
它是如何工作
&是按位安定它實際上檢查。
0x10的是二進制值的十六進制0b10000
所以,你做什麼都在bits
與0b10000
而且逐位安定,Ruby的支持對比特明智的測試類似的結構
if (bits&0x10)
......
end
請注意,如Tim提到的,您的Python構造可以簡化爲
if bits&0x10:
.......
...並可以縮短爲'if bits&0x10:'... – 2013-02-19 17:04:42
thx,這有助於。並感謝與紅寶石提示 – Dakkar 2013-02-19 17:17:19
單獨的&
是按位和操作。即,bits
與0x10的逐位比較,並且如果兩者都具有一個位的1
該位置上的結果是1
該位置,否則爲0。
基本上,由於爲0x10是二進制10000,這是檢查是否bits
中的第5位設置爲1
。
我不太瞭解ruby,但我的猜測是,它應該有一個按位運算符,它也可能是&
。因此,這段代碼最終會在ruby中完全相同。
編輯:根據Ruby Operators頁面。在「Ruby Bitwise Operators」部分,&
也是一個按位和紅寶石,所以你可以保持這種狀態在你的實用程序的翻譯,它應該,確實,工作。
[位 「與」(http://en.wikipedia.org/wiki/Bitwise_operation ) – JBernardo 2013-02-19 17:02:19
順便說一下,Python中沒有'&&','bits和0x10 == 0x10'會做很大的改變。 – geoffspear 2013-02-19 17:06:57