0

PythonユーティリティをRubyに変換しようとしています。問題は、Pythonをよく理解していないことです。

ユーティリティのフラグメントには、次のif条件が含まれています。

if bits&0x10==0x10: 

どういう意味ですか?ビットは変数です。それはある種の「短縮された」「&&」、つまりビットがゼロ以外値が0x10の場合ですか?ありがとう!

4

3 に答える 3

6

&単独はビット単位の and 操作です。つまり、ビットごとに0x10bitsと比較され、両方がその位置のビットを持っている場合、1その位置の結果が1得られ、そうでない場合は 0 になります。

bits基本的に、0x10 は 2 進数で 10000 であるため、これは の 5 番目のビットが に設定されているかどうかをチェックしてい1ます。

私はルビーについてあまり知りませんが、私の推測では、それにはビットごとの and 演算子が必要であり、おそらくそうなるでしょう&。したがって、この特定のコードは、Ruby でまったく同じになることになります。

編集: Ruby Operatorsページによると。セクション「Ruby Bitwise Operators」では、&ビット単位としても Ruby でも機能するため、ユーティリティの翻訳でこれをそのままにしておくことができ、実際に機能するはずです。

于 2013-02-19T17:03:44.777 に答える
5

変数ビットの5番目のビットが設定されているかどうかを実際にチェックします

使い方

  • & はビット単位の AND です。

  • 0x10 はバイナリ値 0b10000 の 16 進数です

  • だから、あなたはこれまでに何が入っているかについて少し賢明なandingを行いbitsます0b10000

さらに、Ruby はビットごとのテスト用に同様の構造をサポートしています。

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

ティムが述べたように、Python 構造は次のように単純化できることに注意してください。

if bits&0x10:
    .......
于 2013-02-19T17:03:10.757 に答える
0

& は、バイナリのビット単位の "and" 演算子です。

0x10 は 16 進数の 10 です。

ここでpythonドキュメントを読みたいと思うかもしれません

http://docs.python.org/2/reference/expressions.html

于 2013-02-19T17:05:14.797 に答える