C++에서 이진수를 십진수로 변환

C Eseo Ijinsuleul Sibjinsulo Byeonhwan



이 기사에서는 C++ 프로그램에서 이진 값을 십진 값으로 변환하는 방법을 살펴보겠습니다. 이진수는 0과 1의 숫자로 표시되는 반면, 십진수 값은 0에서 9까지의 숫자를 포함합니다. 이진수를 십진수로 변환하려면 이진수에 2의 제곱을 곱해야 합니다. n'은 오른쪽부터 시작하여 더 높은 'n'으로 왼쪽으로 이동합니다. 이진수를 십진수 값으로 변환하는 코드를 구현해 보겠습니다.

예제 1: 'While' 루프를 사용한 이진수에서 십진수로의 프로그램

숫자를 이진수에서 십진수로 변환하는 다음 프로그램이 있습니다. 프로그램 내에서 이진수를 십진수로 변환하기 위해 'while' 루프를 활용합니다.

#include
#include

사용하여 네임스페이스 성병 ;

정수 변환Bin ( ) ;

정수 기본 ( ) {
하나에 ;
시합 << '2진수 필수: ' ;
식사 >> 하나에 ;
시합 << 하나에 << ' 바이너리 = ' << 변환Bin ( 하나에 ) << '십진수로' ;
반품 0 ;
}

정수 변환Bin ( 하나에 ) {
정수 그래서 = 0 , x = 0 , 나머지 ;

~하는 동안 ( 하나에 ! = 0 ) {
나머지 = 하나에 % 10 ;
하나에 / = 10 ;
12월 + = 나머지 * ( 2 , x ) ;
++ 엑스 ;
}

반품 그래서 ;
}

여기서는 입력 및 출력 스트림에 대한 'iostream' 헤더 파일과 프로그램에서 수학 함수를 활용하기 위한 'cmath'를 정의합니다. 그런 다음 'long long' 유형의 매개변수가 전달되는 ConversionOfBin() 함수를 정의합니다. 다음으로 프로그램을 실행하기 위한 main() 함수 호출이 있습니다. main() 함수 내부에 'num'이라는 긴 내부 유형 변수를 선언합니다.

그런 다음 ConversionOfBin() 함수는 입력된 이진수를 십진수로 변환합니다. 이를 위해 드라이버 코드 뒤에 ConversionOfBin() 함수 정의가 있습니다. ConversionOfBin() 함수는 이진수를 갖는 'num' 변수와 함께 전달됩니다. 그런 다음 'while' 루프를 호출하여 'num'의 이진수를 십진수 값으로 변환합니다. 그 전에 'deci', 'x', 'remainder' 변수를 '0' 값으로 초기화합니다.

'while' 루프 내에서는 이진수의 가장 오른쪽 값을 나타내기 위해 나누기 연산이 수행됩니다. 나누기 결과는 'remainder' 변수에 저장됩니다. 그런 다음 나머지 결과와 거듭제곱 결과를 'deci' 변수에 추가합니다. 'x' 변수는 2의 유효 전력을 계속 평가합니다.

지정된 이진수를 십진수 값으로 변환한 결과는 C++ 콘솔에서 얻을 수 있습니다.

예제 2: 'For' 루프를 사용하여 2진수를 10진수로 변환하는 프로그램

이진수에서 십진수로의 변환은 'while' 루프를 사용하여 수행되었습니다. 그러나 'for' 루프 방법을 사용하여 이진수 비트를 십진수로 변환할 수도 있습니다.

#include
#include <문자열>

정수 기본 ( ) {
성병 :: 큰 상자 ;
성병 :: 시합 << '입력 이진수: ' ;
성병 :: 식사 >> 큰 상자 ;

정수 12월 = 0 ;
정수 베이스는 = 1 ;

~을 위한 ( 정수 = 큰 상자. 길이 ( ) - 1 ; >= 0 ; -- ) {
만약에 ( 큰 상자 [ ] == '1' ) {
12월 + = 베이스는 ;
}
베이스는 * = 2 ;
}

성병 :: 시합 << '10진수 결과: ' << 12월 << 성병 :: ;

반품 0 ;
}

여기서는 사용자가 프롬프트에 입력한 이진수를 저장하는 'bin'인 'std::string' 변수가 있는 main() 함수 프로그램으로 시작합니다. 처음에는 'cout' 문을 사용하여 이진수를 입력하라는 메시지가 표시됩니다. 그런 다음 'cin' 명령은 해당 이진수를 읽습니다. 그런 다음 'dec' 변수를 '0' 값으로 초기화하고 'baseIs' 변수를 '1' 값으로 초기화하여 해당 십진수를 얻습니다.

그런 다음 지정된 바이너리의 각 숫자를 오른쪽에서 왼쪽으로 반복하는 'for' 루프를 호출합니다. 루프 내에는 이진수가 1인지 확인하는 'if' 조건이 있습니다. 1이면 십진수 값이 'dec' 변수에 추가됩니다. 'baseIs' 변수는 각 반복마다 1과 곱해지는 2의 거듭제곱을 갖습니다.

이진수 값과 십진수 값으로의 변환이 프롬프트 화면에 표시됩니다.

예제 3: 2진 문자열을 10진수로 변환하는 프로그램

이제 이진 문자열 값이 해당 값을 십진수 값으로 변환하도록 정의되었습니다. 이진 문자열 값을 십진수 값으로 변환하기 위해 다음 구현이 수행됩니다.

#include
#include <문자열>
사용하여 네임스페이스 성병 ;

정수 binToDec ( 문자열 값 )
{
문자열 값 = ;
정수 십진수_값 = 0 ;

정수 기본_값 = 1 ;

정수 오직 = 값. 길이 ( ) ;
~을 위한 ( 정수 = 오직 - 1 ; >= 0 ; -- ) {
만약에 ( [ ] == '1' )
십진수_값 + = 기본_값 ;
기본_값 = 기본_값 * 2 ;
}

반품 십진수_값 ;
}

정수 기본 ( )
{
문자열 값 = '11100101' ;
시합 << binToDec ( ) << ;
}

여기서는 이진수를 십진수 값으로 변환하는 BinToDec() 함수를 만드는 것부터 시작합니다. BinToDec() 함수는 문자열 유형의 'val' 인수를 사용합니다. BinToDec() 함수 내에서 'val' 변수의 값이 'value' 변수에 저장된다는 것을 나타내는 'val' 변수로 'value' 변수를 초기화합니다. 그런 다음 값 0이 할당된 새 변수 'decimal_value'를 선언합니다.

마찬가지로 'base_value' 변수가 설정되고 값 1로 초기화됩니다. 다음으로 이진수의 길이를 얻기 위해 length() 함수가 호출되는 'len' 변수를 정의합니다. 변수 초기화 후에는 'for' 루프 반복이 발생합니다. 'for' 루프는 모든 이진수 숫자를 오른쪽에서 왼쪽으로 반복합니다.

그런 다음 'cout' 명령으로 BinToDec(val) 함수를 호출할 때 이진수가 'val' 변수에 대한 문자열 값으로 지정되는 main() 함수가 있습니다. 이 변수는 십진수 값으로 변환됩니다.

이제 문자열 유형의 이진 값이 다음과 같이 십진 값으로 변환됩니다.

예제 4: Bitset 클래스를 사용하여 이진수를 십진수로 변환하는 프로그램

또한 프로그램에서 C++의 'bitset' 클래스를 정의하여 이진수를 십진수로 변환할 수 있습니다. 변환 절차가 매우 간단한 기능을 제공합니다.

#include
#include <비트세트>

정수 기본 ( ) {
성병 :: 바이너리 ;
성병 :: 시합 << '이진수를 입력하세요:' ;
성병 :: 식사 >> 바이너리 ;

성병 :: 비트셋 < 64 > 바이너리 ( 바이너리 ) ;
서명되지 않은 십진수 = 바이너리. 너무 오래 ( ) ;

성병 :: 시합 << '십진수: ' << 십진수 << 성병 :: ;

반품 0 ;
}

여기에서는 바이너리 값으로 작업할 때 매우 유용한 C++의 'bitset' 라이브러리를 헤더에 설정했습니다. 그 다음에는 “std::string”을 사용하여 “binaryIs” 변수를 선언하는 main() 함수 정의가 있습니다. 'binaryIs' 변수는 문자열에 바이너리 값을 저장합니다. 다음으로 사용자 프롬프트에 이진수를 추가하도록 요청하고 'cin' 명령을 통해 이를 읽습니다. 그런 다음 64비트 정수가 될 수 있는 비트 크기를 조정합니다. 그런 다음 'bitset' 클래스에서 'decimalNumber' 변수로 to_ulong() 함수가 호출됩니다. to_ulong() 함수는 비트 세트를 부호 없는 long 데이터 유형으로 변환합니다. 마지막으로 'cout' 명령을 사용하여 사용자가 제공한 이진수 값을 10진수로 출력합니다.

사용자가 제공한 이진수 값은 이제 십진수 값으로 변환됩니다.

결론

결론적으로 이진 값을 십진 값으로 변환하는 방법을 다루었습니다. 우리는 이진수를 십진수로 변환하기 위해 'for' 루프, 'while' 루프 및 비트셋 클래스 접근 방식을 사용했습니다. 이러한 접근 방식은 이진수를 십진법으로 변환하여 읽기와 이해를 용이하게 합니다.