2016-04-18 11 views
2

Ich bin neu bei scala und habe ein paar grundlegende Operationen versucht, um die Sprache zu verstehen.Wie man das benutzt! Betreiber in Scala?

Ich versuche, die logischen Operatoren zu verwenden. Beispiel:

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

Ich möchte den Wert von a2 negieren und dann ausdrucken. Aber es gibt mir eine Fehlermeldung,

value unary_! is not a member of Int 

Ich bin nicht sicher, wie verwende ich den Nicht-Operator. Könnte mir jemand helfen?

+0

Was möchten Sie erreichen? Was ist das Ergebnis, das Sie erwarten? – Agemen

+1

Wie du gesagt hast: '!' Ist ein * logischer * Operator. Aber du arbeitest mit * Nummern *. Sie müssen also entweder * numerische * Operatoren (arithmetische Operatoren) verwenden, wenn Sie weiterhin mit Zahlen arbeiten möchten, oder * logische Werte * (boolesch) verwenden, wenn Sie weiterhin mit logischen Operatoren arbeiten möchten. Das Anwenden eines logischen Operators auf etwas, das kein logischer Wert ist, macht keinen Sinn. –

Antwort

9

Verwenden Sie den bitweisen Nicht-Operator ~.

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

prüfen here for reference.

Natürlich wird dies vorausgesetzt, Sie den Wert bitweise negieren wollen, sonst - verwenden.

+0

Vielen Dank dafür. Ich möchte das verwenden - um die nicht-Operation durchzuführen. Aber ich brauche die Antwort nur als '1' oder '0'. Aber immer, wenn ich diesen '-' Operator verwende, bekomme ich immer einen negativen Wert statt einer binären 0 oder 1. Was fehlt mir hier? – Goldengirl

+0

Aber 'a2' ist schon' 1'. '0x01 & 0xFF' ist gleich' 1'. Negieren wird also in -1 oder -2 abhängig vom verwendeten Operator. –

1

Wenn Sie erwarten, -2 zu erhalten, verwenden Sie den bitweisen Operator ~, es werden alle Bits Ihrer Ganzzahl invertiert. Wenn Sie erwarten, -1 zu erhalten, d. H. Das Gegenteil Ihrer Ganzzahl, verwenden Sie den Operator -.

Valid operators are listed here