C에서 숫자의 이진수 인쇄

Muhammad Husnain 2023년10월12일
  1. 이진수 시스템
  2. 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
Muhammad Husnain avatar Muhammad Husnain avatar

Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.

LinkedIn

관련 문장 - C Binary