[C언어/C++] 10진수를 2진수로 변환 출력하기 (비트연산 활용)

8진수나 16진수의 경우와는 달리 C언어에서는 2진수를 출력해줄 수 있는 서식 문자가 없습니다. 그렇기에 2진수는 직접 구해서 출력해야 하는데 일일이 2로 나누어 거꾸로 읽지 않아도 아래와 같이 비트 연산자를 사용하면 쉽게 구할 수 있습니다.

 

10진수를 2진수로 변환하여 출력하기 (비트연산 활용)

#include<stdio.h>

int main() {

    unsigned int num;
    printf("정수를 입력해주세요\n");
    scanf_s("%d", &num);

    printf("2진수 변환 : ");
    //이진수 출력
    for (int i = 7; i >= 0; --i) { //8자리 숫자까지 나타냄
        int result = num >> i & 1;
        printf("%d", result);
    }
}

바이너리 변환 예제

 

바이너리 변환 과정1

52를 바이너리로 8자리 숫자까지 표기하면 00110100 이 됩니다. 이것을 출력하기 위해 제일 첫번째 숫자(좌측 부터 출력하기 위함)부터 우측으로 비트 연산자 >> (자릿수)를 활용하여 비트를 우측 끝으로 이동시킵니다. 

 

바이너리 변환 과정2

비트의 자릿수만큼 이동시킨 뒤 (첫번째 자릿수라면 >> 7) 1과의 & 연산을 통해 1이라면 1을 출력하고 0이라면 0을 출력합니다.

댓글

Designed by JB FACTORY