# Convert binary into decimal

• 10-14-2009, 06:13 PM
WarmRegards
Convert binary into decimal
Hey people. Ok to be honest I don't even know where to begin on this one. I have pieces of knowledge all over the place but I can't seem to put any of it together. I taught myself how to do binary to decimal conversion on paper using the "convert from binary to decimal wiki how" tutorial.

I don't need you to do my assignment for me but I need to be hinted in right directions on what I should be doing, what the next logical step would be. Preferably in plain english and code.

Here is a correct "example run" of the program:

Code:

```        3  Input a binary number:  -1     4  Input must be >= 0     5     6  Input a binary number:  1121     7  Input must be a Binary number     8     9  Input a binary number:  0011100   10  11100   11  Base 2 Equals   12  28   13  Base 10```
Here is what I have so far:

Code:

```import java.util.*; //Scanner class is defined here public class BinaryToDecimal {         public static void main(String[] args) {                 BinaryToDecimal obj = new BinaryToDecimal();                 obj.process();         }         private void process(){                 Scanner in = new Scanner(System.in); //required to read input                 System.out.print("Input a binary number: ");                 int number = in.nextInt();            //reads a line of input                                 while (number < 0){                          System.out.println("Input must be >= 0");                         System.out.print("\nInput a binary number: ");                         number = in.nextInt(); //accepts new keyboard input again                                                         }         } }```
Other rules:

* You may not use any of the Math class built in power() or binary digit processing methods. All calculations must be done explicitly.

* We do not need to use arrays.

It's best to use:

* % (modulus operator) to access the current right-most digit

* / (int division operator) to divide down the current value after processing the right-most digit

* Repeat for all digits

This is the best and easiest way to solve this assignment.
• 10-14-2009, 06:18 PM
xcallmejudasx
If I remember correctly you just keep modding the number by 2 and if you get a remainder you put a 1 and if you dont you put a 0. I think at the end you have to reverse the entire string for it to output correctly.
• 10-14-2009, 06:24 PM
Fubarable
Heck, I'd use the static parseInteger method from the Integer class to parse the input String using a radix of 2. It doesn't say you can't do it that way, but I'm guessing the instructor won't like the solution.
• 10-14-2009, 06:24 PM
WarmRegards
I should note I have a total lifetime experience of 4 weeks with programming in Java and programming at all.
• 10-14-2009, 06:27 PM
Fubarable
Quote:

Originally Posted by xcallmejudasx
If I remember correctly you just keep modding the number by 2 and if you get a remainder you put a 1 and if you dont you put a 0. I think at the end you have to reverse the entire string for it to output correctly.

Doesn't that solve the inverse problem? Or is my brain not working today?

Original Poster: what steps would you do to solve this on paper?

If I couldn't use Integer.parseInt, I'd do what the professor states:

1) get the right most number by mod 2,
2) then divide the result by 2 and do something with the result.
3) Get the next right most number by dividing the original number by 2, then modding by 2,...
• 10-14-2009, 06:34 PM
xcallmejudasx
Quote:

Originally Posted by Fubarable
Doesn't that solve the inverse problem? Or is my brain not working today?

Original Poster: what steps would you do to solve this on paper?

The inverse being converting from ....I just caught myself.

Ya ignore my previous post it doesn't answer the question you asked.

There's a simple method I learned(once again it's been a while this could be wrong) but to convert from binary to decimal you take the 2's place value of the digit, 11010 being 32 16 8 4 2 and if you have a 1 at that location you add the number. so 11010 would be 2^5 + 2^4 + 0 + 2^2 + 2 = 32 + 16 + 0 + 4 + 0 = 52
• 10-14-2009, 06:34 PM
WarmRegards
well on paper what I would do, for instance is take a random digit like:

10111001

Then starting on the right side, double as you work your way to the left.

So:

1 = 1
0 = 2
0 = 4
1 = 8
1 = 16
1 = 32
0 = 64
1 = 128

Then, what we really care about are the values associated with 1's, so 128, 32, 16, 8 and 1.

Add those up: 128+32+16+8+1 = 185
• 10-14-2009, 06:39 PM
Fubarable
OK, now you need to try to find a way to isolate the ones in the 0/2/4/8/16/... placeholders. And I was wrong, you'll need to treat the number as a non-binary one to start with using divide by 10, 100, 1000 etc. This is your program and you should play with this to see what happens when you do this. Also, I would use a boolean for my while loop, and would only ask for input from within the while loop. something like so:

Code:

```    boolean inputOK = false;     while (!inputOK) {       System.out.print("Please input a binary number: ");       //.....     }```
• 10-18-2009, 02:32 PM
raqman
Tty the codes below:
import java.lang.*;
import java.io.*;

public class BinaryToDecimal{
public static void main(String[] args) throws IOException{
System.out.print("Enter the Binary value: ");
long num = Long.parseLong(str);
long rem;
while(num > 0){
rem = num % 10;
num = num / 10;
if(rem != 0 && rem != 1){
System.out.println("This is not a binary number.");