# Thread: Convert binary into decimal

1. ## 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:

Java 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:

Java 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.  Reply With Quote

2. ## 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.  Reply With Quote

3. ## 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.  Reply With Quote

4. ## I should note I have a total lifetime experience of 4 weeks with programming in Java and programming at all.  Reply With Quote

5. ##  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,...
Last edited by Fubarable; 10-14-2009 at 06:31 PM.  Reply With Quote

6. ##  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  Reply With Quote

7. ## 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  Reply With Quote

8. ## 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:

Java Code:
```    boolean inputOK = false;
while (!inputOK) {
System.out.print("Please input a binary number: ");
//.....
}```  Reply With Quote

9. Member Join Date
Sep 2009
Posts
37
Rep Power
0

## 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.");
System.exit(0);
}
}
int i= Integer.parseInt(str,2);
System.out.println("Decimal:="+ i);
}
}  Reply With Quote

#### Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts
•