HOWTO · C
C에서 숫자의 이진수 인쇄
C 언어를 사용하여 십진수를 이진수로 변환하는 완전한 프로그래밍 자습서.
이 간단한 가이드는 C 언어를 사용하여 10진수에서 2진수 시스템 변환기를 구현하는 방법에 관한 것입니다. 구현에 직접 뛰어들기 전에 먼저 이진수 시스템을 요약한 다음 10진수 표현을 해당하는 이진수로 변환하기 위해 여러 C 구현에 대해 논의합니다.
이진수 시스템
두 개의 이산 또는 범주 상태에서 작동하는 시스템을 이진 시스템이라고 합니다. 마찬가지로 이진수 시스템은 1(1)과 0(0)이라는 두 가지 기호만 사용하여 숫자를 나타냅니다.
따라서 base-2 시스템이라고도 합니다.
현재 대부분의 트랜지스터 기반 논리 회로 구현은 이산 이진 상태를 사용합니다. 따라서 모든 최신 디지털 컴퓨터는 이진 시스템을 사용하여 데이터를 표시, 저장 및 처리합니다.
예를 들어 6을 이진수 시스템으로 변환합니다.
여기에서 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인 경우:
- 스택에
number배치 number/2로 함수를 재귀적으로 호출- 스택에서
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:
number > 0인지 확인- 오른쪽 시프트 연산자를 1비트 적용한 후 재귀적으로 함수를 호출합니다.
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