코드업 C언어 기초 100제에서 [기초-비트단위논리연산] 풀기
비트단위(bitwise)연산자 ~ 를 붙이면 된다.(~ : tilde, 틸드라고 읽는다.)
(단, 정수(2147483648 ~ +2147483647) 1개가 입력되며, 비트 단위로 1 → 0, 0 → 1로 바꾼 후 그 값을 10진수로 출력한다.)
#include <stdio.h>
int main() {
int i;
scanf("%d", &i);
printf("%d", ~i);
return 0;
}
비트단위(bitwise)연산자 &를 사용하면 된다.(and, ampersand, 앰퍼센드라고 읽는다.)
(단, 2개의 정수(-2147483648 ~ +2147483647)가 공백을 두고 입력되며, 두 정수를 비트단위(bitwise)로 and 계산을 수행한 결과를 10진수로 출력한다.)
#include <stdio.h>
int main() {
int i, j;
scanf("%d %d", &i, &j);
printf("%d", i&j);
return 0;
}
비트단위(bitwise) 연산자 |(or, vertical bar, 버티컬바)를 사용하면 된다.
(단, 2개의 정수가 공백을 두고 입력되며, 두 정수를 비트단위(bitwise)로 or 계산을 수행한 결과를 10진수로 출력한다.)
#include <stdio.h>
int main() {
int i, j;
scanf("%d %d", &i, &j);
printf("%d", i|j);
return 0;
}
비트단위(bitwise) 연산자 ^(xor, circumflex/caret, 서컴플렉스/카릿)를 사용하면 된다.
(단, 2개의 정수가 공백을 두고 입력되며, 두 정수를 비트단위(bitwise)로 xor 계산을 수행한 결과를 10진수로 출력한다.)
#include <stdio.h>
int main() {
int i, j;
scanf("%d %d", &i, &j);
printf("%d", i^j);
return 0;
}
1)
비트단위(bitwise) 연산자
~(bitwise not): (2진수를 기준으로) 0→1, 1→0 변환
&(bitwise and): 두 정수를 비트단위로 and 연산
|(bitwise or): 두 정수를 비트단위로 or 연산
^(bitwise xor): 두 정수를 비트단위로 xor 연산
<<(bitwise left shift)
>>(bitwise right shift)
2) 문제들을 풀어놓고 한꺼번에 업로드하려고 하니 언제 어디에서 무슨 생각을 가지고 풀었는지가 기억이 안난다. 다음부터는 풀자마자 바로 올려야겠다.