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);
}
}
52를 바이너리로 8자리 숫자까지 표기하면 00110100 이 됩니다. 이것을 출력하기 위해 제일 첫번째 숫자(좌측 부터 출력하기 위함)부터 우측으로 비트 연산자 >> (자릿수)를 활용하여 비트를 우측 끝으로 이동시킵니다.
비트의 자릿수만큼 이동시킨 뒤 (첫번째 자릿수라면 >> 7) 1과의 & 연산을 통해 1이라면 1을 출력하고 0이라면 0을 출력합니다.
'Language > C , C++ , C#' 카테고리의 다른 글
[C언어/C++] 비트 쪼개기 (Bit Split) 사용법 & 예제 (비트연산 활용) (2) | 2021.01.29 |
---|---|
[C언어/C++] 비트 플래그 (Bit Flag) 사용법 & 예제 (비트연산 활용) (0) | 2021.01.29 |
[C언어/C++] 10진수를 8진수, 16진수로 출력하기 (0) | 2021.01.28 |
[C언어/C++] 열거형 enum 사용법 & 예제 (3) | 2021.01.17 |