C에서 십진수를 이진수로 변환하는 방법

Ceseo Sibjinsuleul Ijinsulo Byeonhwanhaneun Bangbeob



컴퓨터 시스템은 데이터와 명령을 나타내기 위해 이진수를 자주 사용하지만 십진수는 사람들이 이진수보다 이해하기 쉽기 때문에 변환이 필요합니다. 이 기사에서는 십진수를 이진수로 이해하고 C라는 프로그래밍 언어에서 십진수를 이진수로 변환하는 다양한 방법의 프로그램 예제를 제공합니다.

C에서 십진수를 이진수로 변환하는 방법?

주어진 10진수 값을 2로 여러 번 나누고 나머지는 최종 몫이 0이 될 때까지 기록됩니다. 이 프로세스는 정수를 10진수에서 2진수로 변환하는 데 사용됩니다. 10진수에서 2진수로의 변환 과정을 설명하는 수식은 다음과 같은 단계로 간주됩니다.







1 단계: 숫자를 2로 나누어 나머지를 찾은 다음 배열에 추가합니다.



2 단계: 다음으로 나머지를 2로 나눕니다.



3단계: 결과가 0을 초과할 때까지 처음 두 단계를 다시 수행하십시오.





4단계: 숫자의 이진 형식을 얻기 위해 배열을 거꾸로 표시합니다. 이진수의 LSB(Least-Significant-Bit)는 맨 위에 있는 반면 MSB(Most-Significant-Bit)는 맨 아래에 있습니다. 이것은 이것을 해석하는 또 다른 방법입니다. 제공된 십진수에 해당하는 이진수는 this입니다.

이를 더 잘 이해하기 위해 다음은 11의 변환입니다. 10 10진수에서 2진수로 변환:



2로 나누기 나머지
11÷2 5 1(LSB)
5 ÷ 2 2 1
2-2 1 0
1-2 0 1(MSB)


이제 나머지를 역순으로 쓰십시오. 따라서 십진수(11 10 )는 (1011 2 ).

나머지를 기록한 다음 이진수의 (MSB)가 먼저 나오고 나머지가 나오도록 기록합니다. 결과적으로 1011 2 주어진 10진수 값 11에 해당하는 이진수입니다. 10 . 그 결과 11 10 = 1011 2 . 다음은 위에서 언급한 십진수를 C 언어로 이진수로 변환한 것입니다.

10진수를 2진수로 변환하는 데 사용되는 방법

C 언어에서 사용되는 다음 메서드는 10진수를 2진수로 변환합니다.

이제 위에서 언급한 접근 방식으로 십진수를 이진수로 변환하는 것을 하나씩 구현하십시오.

방법 1: for 루프를 사용한 C 프로그래밍에서 10진수에서 2진수로

다음은 C에서 for-loop를 사용하여 십진수(11)를 이진수로 변환한 것입니다.

#include
무효 변환 ( 정수 번호 1 ) {
만약에 ( 숫자1 == 0 ) {
printf ( '0' ) ;
반품 ;
}
정수 이진수 [ 32 ] ; // 가정 32 비트 정수.
정수 = 0 ;
~을 위한 ( ;num1 > 0 ; ) {
이진수 [ 나++ ] = 숫자1 % 2 ;
숫자 1 / = 2 ;
}
~을 위한 ( 정수 j = i- 1 ; 제이 > = 0 ; 제이-- )
printf ( '%디' , 이진수 [ 제이 ] ) ;
}
정수 메인 ( ) {
정수 번호1;
printf ( '10진수를 입력하세요: ' ) ;
스캔프 ( '%디' , & 숫자 1 ) ;
전환하다 ( 숫자 1 ) ;
반품 0 ;
}


위 프로그램은 사용자가 제공한 10진수를 2진수로 변환하기 위해 for 루프를 사용하고 있습니다. 출력은 다음과 같습니다.

방법 2: while 루프를 사용한 C 프로그래밍에서 10진수에서 2진수로

이 방법에서 C의 while 루프는 아래와 같이 10진수(11)를 2진수로 변환하는 데 사용됩니다.

#include
정수 메인 ( ) {
정수 십진수, 이진수 = 0 , 기준 = 1 , 나머지;
printf ( '10진수를 입력하세요: ' ) ;
스캔프 ( '%디' , & 십진수 ) ;
~하는 동안 ( 십진수 > 0 ) {
나머지 = 십진수 % 2 ;
binary_num = binary_num + 나머지 * 베이스;
십진수 = 십진수 / 2 ;
베이스 = 베이스 * 10 ;
}
printf ( 'while 루프가 있는 주어진 10진수의 이진수: %d' , 이진수 ) ;
반품 0 ;
}


4개의 정수 변수 decimal_num, binary_num, base 및 나머지는 이 프로그램에서 먼저 선언됩니다. 사용자는 decimal_num을 입력하고 이를 binary_num으로 변환합니다. 이진 변환은 while 루프를 사용하여 수행됩니다.

방법 3: 스택을 사용한 C 프로그래밍에서 10진수를 2진수로

이것은 10진수 값을 2진수로 변경하는 스택 기반 C 프로그램을 사용하는 간단한 방법입니다.

#include

#define MAX_SIZE 32 // 이진 표현의 최대 비트 수
정수 메인 ( ) {
int 십진수_숫자, 이진수 [ MAX_SIZE ] , 상단 = -1 ;
printf ( '십진수를 입력하십시오: ' ) ;
스캔프 ( '%디' , & 십진수 ) ;
~하는 동안 ( 십진수 > 0 ) {
바이너리 [ ++탑 ] = 십진수 % 2 ;
십진수 / = 2 ;
}
printf ( '스택 방법을 사용하는 %d의 바이너리는:' ) ;
~하는 동안 ( 맨 위 > = 0 ) {
printf ( '%디' , 바이너리 [ 맨 위-- ] ) ;
}
반품 0 ;
}


먼저 이 프로그램에서 세 개의 정수 변수 top, binary 및 decimal_num을 선언합니다. top은 스택에서 가장 높은 요소의 인덱스이고, decimal은 사용자가 입력한 십진수 형식의 숫자이며, binary는 MAX_SIZE 비트로 이진의 비트를 포함하는 배열이고 decimal_num은 이진 배열입니다. 그런 다음 while 루프를 사용하여 이진 변환이 수행됩니다.

출력은 다음과 같습니다.

방법 4: 비트 연산자를 사용한 C 프로그래밍에서 10진수를 2진수로

비트 연산으로 알려진 연산자는 정수를 나타내는 이진 기호의 각 비트를 조작합니다. 다음은 비트 연산을 사용하여 십진수를 이진수로 변환하는 기본 C 스크립트입니다.

#include

// 이 방법은 모든 4 숫자의 비트
무효 전환 ( 정수 번호 1 ) {
// 고려 4 -비트 번호
~을 위한 ( 정수 i = ; 나 > = 0 ; 나-- ) {
정수 비트 = ( 1 << ) ;
만약에 ( 숫자 1 & 조금 )
printf ( '1' ) ;
또 다른
printf ( '0' ) ;
}
}
정수 메인 ( ) {
정수 번호1;
printf ( '10진수를 입력하세요: ' ) ;
스캔프 ( '%디' , & 숫자 1 ) ;
변환 ( 숫자 1 ) ;
반품 0 ;
}


이 프로그램은 가장 중요한 비트에서 시작하여 가장 중요하지 않은 비트에서 끝나는 숫자를 통해 for 루프를 실행합니다. 마스크와 숫자에 대해 '비트 AND' 연산을 수행하여 비트가 0인지 1인지 결정할 수 있습니다. 0이 아니면 현재 비트는 1입니다. 그렇지 않으면 0입니다.

num1의 이진 형식을 표시하려면 각 반복 후에 비트를 출력하십시오. 실행 완료 후 최종 출력은 다음과 같습니다.

결론

숫자를 10진수에서 2진수로 변환하는 것은 컴퓨터 프로그래밍의 필수 기술입니다. 10진수를 2진수로 변환하면 C 프로그래밍에서 다양한 작업을 수행할 수 있습니다. 이 문서에서는 10진수 값을 2진수 값으로 변환하는 4가지 방법을 제공했습니다.