2016-04-18 2 views
2

Я новичок в scala и пробовал несколько основных операций, чтобы понять язык.Как использовать! оператора в scala?

Я пытаюсь использовать логические операторы. Например:

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

Я хочу отрицать значение a2, а затем распечатывать его. Но это дает мне ошибку:

value unary_! is not a member of Int 

Я не уверен, как использовать оператор NOt. Может ли кто-нибудь мне помочь?

+0

Что вы пытаетесь достичь? Каков результат, которого вы ожидаете? – Agemen

+1

Как вы сказали: '!' - это * логический * оператор. Но вы работаете с * номерами *. Таким образом, вам нужно использовать * числовые * операторы (арифметические операторы), если вы хотите продолжать работать с числами, или вам нужно использовать * логические значения * (booleans), если вы хотите продолжать работать с логическими операторами. Применение логического оператора к чему-то, что не является логическим значением, не имеет смысла. –

ответ

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