2016-04-18 8 views
2

私はスカラを初めて使っていて、いくつかの基本的な操作を試して言語を習得していました。!の使い方スカラーの演算子?

論理演算子を使用しようとしています。例:

val a2 = 0x01&0xFF 
println(!a2) 

a2の値を無効にして印刷したいとします。しかし、それは私にエラーが表示されます

value unary_! is not a member of Int 

私はNOt演算子をどのように使うのですか?誰かが私を助けることができますか?

+0

何を達成しようとしていますか?期待している結果は何ですか? – Agemen

+1

あなたが言ったように、 '!'は*論理*演算子です。しかし、あなたは*数字で働いています*。したがって、数値を扱い続ける場合は*数値演算子(算術演算子)を使用するか、論理演算子を使用し続ける場合は*論理値*(ブール値)を使用する必要があります。論理演算子を論理値ではないものに適用することは意味をなさない。 –

答えて

9

ビット単位でない演算子~を使用してください。もちろん

val a2 = 0x01&0xFF 
println(~a2) 

チェックhere for reference.

、これはそうでない場合-を使用し、あなたが値ビット単位を否定したいと仮定しています。

+0

ありがとうございます。私は - を使用して、非操作を実行する必要があります。しかし、答えは「1」または「0」としてのみ必要です。しかし、私がこの ' - '演算子を使うときはいつも、バイナリ0または1の代わりに負の値を得ることになります。ここでは何が分かりませんか? – Goldengirl

+0

しかし、 'a2'はすでに' 1'です。 「0x01&0xFF」は「1」に等しい。したがって、それを否定することは、使用される演算子に応じて、 '-1'または' -2'で得られます。 –

1

-2を取得すると予想される場合は、ビット演算子~を使用すると、整数のすべてのビットが反転されます。整数の反対の-1を取得する場合は、-演算子を使用します。

Valid operators are listed here