Input an integer containing only 0’s and 1’s( ie. “binary” integer) and print its decimal equivalent. {hint: use the remainder and division operators to pick off the binary numbers digits one at a time from right to left. Just as in the decimal number system, in which the right most digit has a positional value of 1, and the next digit has a positional value of 10, then 100, then 1000, and so on, in the binary number system the rightmost digit has a positional value of 1, the next digit left has a positional value of 2, then 4, then 8, and so on. Thus the decimal number 234 can be interpreted as 4*1+3*10+2*100. The decimal equivalent of binary 1101 is 1*1+0*2+1*4+1*8 or 1+0+4+8 or 13.}
int base_numeric() { works with any base 2-10
int number = 1101; binary number
int base = 2; from base 2
int i = 0;
int r = 0;
while (number > 0) {
int digit = number % 10; extract 1 digit (no matter base)
int mult = (int)pow(base, i++); calculate base ^ i (0, 1, 2,
r += digit * mul
number/=10;
}
return r
}
Recommended Answers
Jump to PostDangerDev
Not only do we not do other people's homework for them, we try to
1) help them come up with their own answers
2) use good code. What the h*** ismul = (int)pow((double)base,(double) i++);
:icon_question:
What's wrong with a simpler = (r * base) + digit;
:icon_question:
…
Jump to Postwollacott:
#1) Format your code.
#2) Where ismain()
defined?
#3) Don't you need some kind of header forpow()
.
#4) Why are you usingpow()
anyway? You don't need doubles for …
Jump to Post>2) use good code. What the h*** is
mul = (int)pow((double)base,(double) i++);i m using vc++ there pow function takes double as argument so its called type casting.
So? Turbo C has
…pow()
too, but you don't need it for this program. See the rest of my post you quoted.
All 9 Replies
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.