문제).

아래와 같은 입력에 대해서 입력 데이터와 결과 데이터를 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;
}
블로그 이미지

사용자 자연&사람

행복한 개발자 programmer since 1995.

댓글을 달아 주세요