HOWTO · C

C에서 숫자의 이진수 인쇄

C 언어를 사용하여 십진수를 이진수로 변환하는 완전한 프로그래밍 자습서.

이 간단한 가이드는 C 언어를 사용하여 10진수에서 2진수 시스템 변환기를 구현하는 방법에 관한 것입니다. 구현에 직접 뛰어들기 전에 먼저 이진수 시스템을 요약한 다음 10진수 표현을 해당하는 이진수로 변환하기 위해 여러 C 구현에 대해 논의합니다.

이진수 시스템

두 개의 이산 또는 범주 상태에서 작동하는 시스템을 이진 시스템이라고 합니다. 마찬가지로 이진수 시스템은 1(1)과 0(0)이라는 두 가지 기호만 사용하여 숫자를 나타냅니다.

따라서 base-2 시스템이라고도 합니다.

현재 대부분의 트랜지스터 기반 논리 회로 구현은 이산 이진 상태를 사용합니다. 따라서 모든 최신 디지털 컴퓨터는 이진 시스템을 사용하여 데이터를 표시, 저장 및 처리합니다.

예를 들어 6을 이진수 시스템으로 변환합니다.

$$ (6)_{10} = (110)_2 $$

여기에서 6은 밑이 10인 10진수 시스템의 숫자이고 해당 바이너리는 110이며 밑이 2인 이진수 시스템입니다. 이 변환 과정을 살펴보겠습니다.

전환 과정

1단계: 답을 얻기 위해 6을 2로 나눕니다. 이 단계에서 얻은 정수 몫을 사용하여 다음 단계에 대한 배당금을 얻습니다.

몫이 0이 될 때까지 이러한 방식으로 계속합니다.

피제수 나머지
6/2 = 3 0
3/2 = 1 1
1/2 = 0 1

2단계: 이진법은 모든 나머지를 역순(아래에서 위로)으로 수집하여 구성할 수 있습니다.

1은 최상위 비트(MSB)이고 0은 최하위 비트(LSB)입니다. 따라서 6의 바이너리는 110입니다.

C 변환 구현

C 언어에서는 숫자를 이진수 시스템으로 변환하는 여러 가지 방법이 있을 수 있습니다. 반복 솔루션일 수도 있고 재귀 솔루션일 수도 있습니다.

그것은 프로그래밍 선택에 달려 있습니다. 이 기사에서는 재귀 솔루션이 매우 간단하기 때문에 재귀 솔루션에 대해 설명합니다.

솔루션 1:

number > 1인 경우:

  1. 스택에 number 배치
  2. number/2로 함수를 재귀적으로 호출
  3. 스택에서 number를 가져와서 2로 나누고 나머지를 출력합니다.
#include <stdio.h>

void convertToBinary(unsigned a) {
  /* step 1 */
  if (a > 1) convertToBinary(a / 2);

  /* step 2 */
  printf("%d", a % 2);
}
int main() {
  // Write C code here
  printf("Binary of the number is: ");
  convertToBinary(6);
  printf("\n");

  return 0;
}

이 코드 조각은 다음 출력을 해제합니다.

Binary of the number is: 110

솔루션 2:

  1. number > 0인지 확인
  2. 오른쪽 시프트 연산자를 1비트 적용한 후 재귀적으로 함수를 호출합니다.
  3. number의 비트 출력
#include <stdio.h>
void convertToBinary(unsigned n)
{
    if (n > 1)
        convertToBinary(n >> 1);

    printf("%d", n & 1);
}
int main() {
    // Write C code here
    printf("Binary of the number is: ");
    convertToBinary(8);
    printf("\n");

    return 0;
}

주어진 코드 조각의 출력은 다음과 같습니다.

Binary of the number is: 1000