2013-11-01 15 views
6

私はちょうどNimrodを発見しており、基本的な質問をしています(ドキュメントで答えを見つけることができませんでした)。Nimrodでは、ビット単位操作の構文は何ですか?

どのようにビット単位の操作を使用しますか?

Error: type mismatch: got (range 0..1(int)) but expected 'bool' 

をそして、私がしようとした場合::

if x and 1: 

これはコンパイルされません:私は、xはintとして定義されている次のコードを、持っている

if and(x, 1) 

私は

を取得します
Error: type mismatch: got (tuple[int, int]) 
but expected one of: 
system.and(x: int16, y: int16): int16 
system.and(x: int64, y: int64): int64 
system.and(x: int32, y: int32): int32 
system.and(x: int, y: int): int 
system.and(x: bool, y: bool): bool 
system.and(x: int8, y: int8): int8 

トリックとは何ですか?

答えて

7

andビット単位ではありません。問題はむしろifが整数ではなくboolを予期していることです。 Cのような比較を0にしたい場合は、単にそれを追加してください:

>>> if 1: 
... echo("hello") 
... 
stdin(10, 4) Error: type mismatch: got (int literal(1)) but expected 'bool' 
>>> if 1!=0: 
... echo("hello") 
... 
hello 
+0

いいえ、私は実際には変数をビットごとに実行する必要があります。より正確に言えば、最後のビットがセットされているかどうかをチェックしたいと思います。 – Fabien

+1

したがって '(x and 1)!= 0'を使用しますか? –

+0

うん、それは、ありがとう、ありがとう。 – Fabien

関連する問題