비트 이동 연산 및 OR연산 사용 예제

SEUNGJUN JEONG·2022년 4월 17일
0

C/C++

목록 보기
4/15

이해하기가 쉽지 않음,,, 진짜 이해하는데 죽을뻔
아무튼, 문제는 이러하다.

비트 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;
}
profile
Microsoft Learn Student Ambassadors

0개의 댓글