이해하기가 쉽지 않음,,, 진짜 이해하는데 죽을뻔
아무튼, 문제는 이러하다.
비트 0~31에 각각 문자의 비트를 집어넣는 문제다.
비트 이동하는거 까지는 이해가 됐었는데 OR연산은 왜 하는지 진짜 머리 많이 굴렸다.
아이디어를 끄적여봤다. OR연산의 정의와 연관지으면, OR연산은 1이 하나라도 있으면 무조건 1로 만드는 특징이 있다. 이 점을 생각해, 어떠한 값을 무조건 덮어씌울 수도 있겠다는 생각을 했다.
그래서 문자를 비트 이동하고, num과 OR 연산을 해 num에 문자 비트를 덮어씌우는 방식을 택했다.
#include <stdio.h>
int main() {
unsigned int num;
char a, b, c, d;
printf("첫번째 문자를 입력하시오: ");
scanf("%c", &a);
num = a;
printf("두번째 문자를 입력하시오: ");
scanf(" %c", &b);
num = b << 8 | num;
printf("세번째 문자를 입력하시오: ");
scanf(" %c", &c);
num = c << 16 | num;
printf("네번째 문자를 입력하시오: ");
scanf(" %c", &d);
num = d << 24 | num;
printf("결과값: %x\n", num);
return 0;
}