C에서 0 또는 1 일 수있는 부호없는 char A가 있다고 가정하십시오. A로 변환 할 비트 논리 연산자를 찾고 싶습니다! .0에서 1 및 1에서 0으로 변환 할 수있는 비트 연산자
참고 :이 코드는 논리 연산자와 비교할 때 비트 연산자가 매우 저렴한 GPU에서 사용합니다. 즉 XOR은 훨씬 저렴합니다. 에 의해
C에서 0 또는 1 일 수있는 부호없는 char A가 있다고 가정하십시오. A로 변환 할 비트 논리 연산자를 찾고 싶습니다! .0에서 1 및 1에서 0으로 변환 할 수있는 비트 연산자
참고 :이 코드는 논리 연산자와 비교할 때 비트 연산자가 매우 저렴한 GPU에서 사용합니다. 즉 XOR은 훨씬 저렴합니다. 에 의해
이 '하지'당신은 당신이 작업을 수행 할 XOR 연산자 ^
을 사용할 수 있습니다 1 1 0에 0을 보낼 것을 의미한다. 문자를 c라고하면 c = c^1;
을 쓸 수 있습니다.
또한 참 부울 표현식을 char로 처리하면 해당 char이 1과 같습니까? 즉 char test = (A == 1); 이 경우 테스트가 1입니까? – Jacko
@Jacko 네 그렇습니다. 또한 다른 답변에서'A =! A; '를 사용해야합니다. 'c = c^1'은 char의 첫번째 비트를 뒤집을 것이고, 나는 왜 당신이 그것을 할 필요가 있는지 생각할 수 있습니다. – HolyBlackCat
고마워, HolyBlackCat. 그러나 c == 0이라면 c^1은 1이 될 것입니다. 그리고 c == 1이면 c^1은 0이됩니다. 그래서 이것은 제가 찾고있는 것입니다. – Jacko
당신은 "논리 NOT"연산자를 사용한다 :
A = !A;
이
당신은 또한 "비트 NOT"연산자를 사용할 수 있습니다,하지만 당신이하고있는 일이 실제로 때문에이 열심히 코드를 이해하는 것 논리적하지 : 당신은 그냥 반복적으로 전환 플래그를 필요로하는 경우
A = ~A;
나는 downvote를 무력화 시켰습니다. 나는 당신의 대답이 직관적이라고 생각했습니다! – Poriferous
'A =! A'는 깨끗한 IMO입니다. – ormaaj
감사합니다. 논리 연산자를 피하려고합니다. 이 질문에 추가했습니다. – Jacko
XOR 할당 1
와 함께 편리합니다.
$ clang -x c -include stdio.h -pipe -o meh - <<\EOF && ./meh
int main(int argc, char **argv) {
unsigned char x = '\0';
for (int n = 0; n <= 50; n++) printf("%d", x ^= 1);
return 0;
}
EOF
101010101010101010101010101010101010101010101010101
어떤 언어 ? 기음? – GrahamS
"! A"로 무엇을 의미합니까? 그 doesnt 어떤 의미, 문자의 반전이 없습니다. – specializt