반응형
문제).
아래와 같은 입력에 대해서 입력 데이터와 결과 데이터를 2진수로 표시하시오
입출력 예1)
[1] 비트 AND(&)
[2] 비트 OR(|)
[3] 비트 XOR(^)
[4] 비트 COMPLEMENT(~)
[0] 종료 stop
위 연산중 하나를 선택하시오.>> 1
비트 연산할 두 정수 입력 >> 100 200
x : 00000000000000000000000001100100
y : 00000000000000000000000011001000
x & y : 00000000000000000000000001000000
입출력 예2)
[1] 비트 AND(&)
[2] 비트 OR(|)
[3] 비트 XOR(^)
[4] 비트 COMPLEMENT(~)
[0] 종료 stop
위 연산중 하나를 선택하시오.>>4
비트 보수(~) 연산할 하나의 정수 입력 >> 111
x : 00000000000000000000000001101111
~x : 11111111111111111111111110010000
답은 아래에... ↓
스스로 풀어보시고... ↓
아래 답과 비교해보세요. ↓
#include <stdio.h>
void print_bin(int value)
{
int i = 0;
for(i = 31; i >= 0; i--) {
printf("%d", (value >> i) & 1);
}
}
int main(int argc, char **argv)
{
int op;
int x, y;
while(1) {
printf("[1] 비트 AND(&)\n");
printf("[2] 비트 OR(|)\n");
printf("[3] 비트 XOR(^)\n");
printf("[4] 비트 COMPLEMENT(~)\n");
printf("[0] 종료 stop\n");
printf("위 연산중 하나를 선택하시오.>> ");
scanf("%d", &op);
if(op == 0) {
break;
} else if(op == 1) {
printf("비트 연산할 두 정수 입력 >> ");
scanf("%d %d", &x, &y);
printf(" x : ");
print_bin(x);
printf("\n y : ");
print_bin(y);
printf("\nx & y : ");
print_bin(x & y);
} else if(op == 2) {
printf("비트 연산할 두 정수 입력 >> ");
scanf("%d %d", &x, &y);
printf("\n x : ");
print_bin(x);
printf("\n y : ");
print_bin(y);
printf("\nx | y : ");
print_bin(x | y);
} else if(op == 3) {
printf("비트 연산할 두 정수 입력 >> ");
scanf("%d %d", &x, &y);
printf("\n x : ");
print_bin(x);
printf("\n y : ");
print_bin(y);
printf("\nx ^ y : ");
print_bin(x ^ y);
} else if(op == 4) {
printf("비트 보수(~) 연산할 하나의 정수 입력 >> ");
scanf("\n%d", &x);
printf(" x : ");
print_bin(x);
printf("\n ~x : ");
print_bin(~x);
}
printf("\n\n");
}
return 0;
}
반응형
'C언어 문제 > 문법 이해' 카테고리의 다른 글
[반복문] 숫자 피라미드 만들기 (0) | 2019.12.10 |
---|---|
[반복문] 전체 구구단을 3단씩 출력하기 (0) | 2019.11.19 |
[bit연산] 10진수를 2진수, 8진수, 16진수로 변환하기 (0) | 2019.11.06 |
[main함수] 명령어로 두 데이터 입력후 계산하기 (0) | 2019.11.04 |
[반복문] 입력문자 횟수만큼 출력 (for문 예제) (0) | 2019.11.04 |