Question #40115

Write a C++ program that reads as a variable an integer containing only 0s and 1s (i.e., a binary integer) and returns its decimal equivalent.
Hint:
Use the remainder and division operators to pick off the binary number’s digits one at a time, from right to left. In the decimal number system, the rightmost digit has a positional value of 1 and the next digit to the left has a positional value of 10, then 100, then 1000, and so on.
The decimal number 234 can be interpreted as 4 * 1 + 3 * 10 + 2 * 100. In the binary number system, the rightmost digit has a positional value of 1, the next digit to the left has a positional valueof2,then4,then8,andsoon.Thedecimalequivalentofbinary1101is1*20 +0*21 +1 * 22 + 1 * 23, or 1 + 0 + 4 + 8 or, 13.

Expert's answer

#include <iostream>

using namespace std;

int main () {

long result = 0; // variable of result

int input; // input int 10...1

cin >> input; // reading input int

long power = 1; // power of 2 (1, 2, 4, ...)

while (input > 0) { // looking on input int

result += (input % 10) * power; // using remainder operator for taking last digit and multiplying it on power of 2

input = (int) input / 10; // using division operator for deleting last digit

power *= 2; // increasing power of 2

}

cout << result; // output of result

return 0;

}

using namespace std;

int main () {

long result = 0; // variable of result

int input; // input int 10...1

cin >> input; // reading input int

long power = 1; // power of 2 (1, 2, 4, ...)

while (input > 0) { // looking on input int

result += (input % 10) * power; // using remainder operator for taking last digit and multiplying it on power of 2

input = (int) input / 10; // using division operator for deleting last digit

power *= 2; // increasing power of 2

}

cout << result; // output of result

return 0;

}

## Comments

## Leave a comment