Самый элегантный способ изменить 0 на 1 и наоборот - PullRequest
44 голосов
/ 09 марта 2010

Какой самый элегантный способ сделать следующее:

int i = oneOrZero;

if (i == 0) {
   i = 1;
} else {
   i = 0;
}

Можно предположить, что i может иметь только значение 1 или 0.

Ответы [ 6 ]

112 голосов
/ 09 марта 2010

i ^= 1;

XOR значение с 1. Это дает вам оба пути (в случае, если вам нужно перевернуть 0 <--> 1 в любом случае):

0 ^ 1 = 1
1 ^ 1 = 0
81 голосов
/ 09 марта 2010

Вычитание

i = 1 - i;
6 голосов
/ 09 марта 2010

i = ( i + 1 ) % 2, хотя я думаю, что мы все согласны, что метод вычитания или xor лучше (Хотя он имеет дополнительное преимущество «переключать переключатель» для более чем двоичного.)

4 голосов
/ 09 марта 2010

i = (i == 0)?1:0 - один из способов, хотя мне больше нравятся версии @ Jimmy и @ Yuval.

2 голосов
/ 09 марта 2010

Использовать бит xor

i ^= 1;

1 голос
/ 31 декабря 2016
int x = 0;
x=(int)Math.cos(x);
System.out.println("X value "+x);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...