programing

산술 연산자를 사용하여 0과 1 사이를 뒤집을 수 있습니까?

nasanasas 2020. 12. 26. 15:30
반응형

산술 연산자를 사용하여 0과 1 사이를 뒤집을 수 있습니까?


논리 및 비트 연산자를 사용하지 않고 산술 연산자를 사용하지 않고 값이 0과 1 인 정수 사이를 뒤집는 방법이 있습니까?

즉. "변수? = 변수"는 변수가 0이면 1로, 1이면 0으로 만듭니다.


x = 1 - x

0과 1 사이에서 전환됩니다.


편집 : 나는 OP가 any연산자를 사용할 수 있다고 생각하여 질문을 잘못 읽었습니다.

조금 더 ... (무시)

x ^= 1       // bitwise operator
x = !x       // logical operator
x = (x <= 0) // kinda the same as x != 1

연산자를 사용하지 않고?

int arr[] = {1,0}
x = arr[x]

0 또는 1로 초기화되었다고 가정합니다.

x = 1 - x

또 다른 방법 :

x = (x + 1) % 2

st0le의 두 번째 방법에 대한 코미디 변형

x = "\1"[x]

int flip(int i){
    return 1 - i;
};

약간의 다양성을 위해 :

x = 1 / (x + 1);

x = (x == 0);

x = (x != 1);

산술 연산자 를 고려 ==하고 있는지 확실하지 않습니다 !=. 아마도 그렇지 않을 것이며 분명히 C에서 작동하지만 더 강력한 형식의 언어는 결과를 정수로 변환하지 않습니다.


당신은 간단히 이것을 시도 할 수 있습니다

+(!0) // output:1

+(!1) // output:0

조금 뒤집는 또 다른 방법.

x = ABS(x - 1) // the absolute of (x - 1)

참조 URL : https://stackoverflow.com/questions/4084050/can-you-use-arithmetic-operators-to-flip-between-0-and-1

반응형