그래서 이진수에서 10 진수로 변환 할 때 다음과 같은 해결책을 보았습니다. 작동하는 것을 볼 수는 있지만 실제로 알고리즘 이론을 이해하고 싶습니다. 2 진수에서 10 진수로의 변환 이론
#include<iostream>
using namespace std;
int main()
{
long bin, dec = 0, rem, num, base = 1;
cout << "Enter the binary number(1s and 0s) : ";
cin >> num;
bin = num;
while (num > 0)
{
rem = num % 10;
dec = dec + rem * base;
base = base * 2;
num = num/10;
}
cout << "The decimal equivalent of " << bin << " : " << dec << endl;
return 0;
}
그래서 우리는 이동 입력의 나머지 부분을 추가하고 위치의 기준에 의해 그것을 곱 만이 정답까지 추가 끝 어떻게 난 정말 이해가 안된다.
내가 제공 할 수있는 것이 있다면 알려주십시오.
감사 시작 num
에서
디버거로 코드를 단계별로 실행하여 작동 방법을 확인할 수 있어야합니다. 또는 연필과 종이에 사용하십시오. 그렇게하면 무슨 일이 일어나고 있는지 더 잘 이해할 수 있습니다. – NathanOliver
이러한 문제를 해결하는 올바른 도구는 디버거입니다. 스택 오버플로를 묻기 전에 코드를 단계별로 실행해야합니다. 자세한 도움말은 [작은 프로그램 디버깅 방법 (Eric Lippert 작성)] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)을 참조하십시오. 문제를 재현하는 [최소, 완료 및 확인 가능] (http://stackoverflow.com/help/mcve) 예제와 함께 해당 질문을 \ [편집]해야합니다. 디버거. –
힌트 : 실제로'cin >> num'은 이진 표현이 아닌 사용자 입력으로부터 십진수 표현을 읽습니다. 이것은 바이너리 표현의'std :: string'을 읽고 그것을 ['std :: bitset'의 생성자에 전달하는 매우 복잡한 방법처럼 보입니다. –