Results 1 to 9 of 9
  1. #1
    WarmRegards's Avatar
    WarmRegards is offline Member
    Join Date
    Oct 2009
    Location
    Boston
    Posts
    12
    Rep Power
    0

    Question 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.
    "All animals are equal, but some are more equal than others."
    - George Orwell

  2. #2
    xcallmejudasx's Avatar
    xcallmejudasx is offline Senior Member
    Join Date
    Oct 2008
    Location
    Houston, TX & Flint, MI
    Posts
    609
    Rep Power
    7

    Default

    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.
    Liberty has never come from the government.
    Liberty has always come from the subjects of government.
    The history of liberty is the history of resistance.
    The history of liberty is a history of the limitation of governmental power, not the increase of it.

  3. #3
    Fubarable's Avatar
    Fubarable is offline Moderator
    Join Date
    Jun 2008
    Posts
    19,316
    Blog Entries
    1
    Rep Power
    26

    Default

    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.

  4. #4
    WarmRegards's Avatar
    WarmRegards is offline Member
    Join Date
    Oct 2009
    Location
    Boston
    Posts
    12
    Rep Power
    0

    Default

    I should note I have a total lifetime experience of 4 weeks with programming in Java and programming at all.
    "All animals are equal, but some are more equal than others."
    - George Orwell

  5. #5
    Fubarable's Avatar
    Fubarable is offline Moderator
    Join Date
    Jun 2008
    Posts
    19,316
    Blog Entries
    1
    Rep Power
    26

    Default

    Quote Originally Posted by xcallmejudasx View Post
    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.

  6. #6
    xcallmejudasx's Avatar
    xcallmejudasx is offline Senior Member
    Join Date
    Oct 2008
    Location
    Houston, TX & Flint, MI
    Posts
    609
    Rep Power
    7

    Default

    Quote Originally Posted by Fubarable View Post
    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
    Liberty has never come from the government.
    Liberty has always come from the subjects of government.
    The history of liberty is the history of resistance.
    The history of liberty is a history of the limitation of governmental power, not the increase of it.

  7. #7
    WarmRegards's Avatar
    WarmRegards is offline Member
    Join Date
    Oct 2009
    Location
    Boston
    Posts
    12
    Rep Power
    0

    Default

    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
    "All animals are equal, but some are more equal than others."
    - George Orwell

  8. #8
    Fubarable's Avatar
    Fubarable is offline Moderator
    Join Date
    Jun 2008
    Posts
    19,316
    Blog Entries
    1
    Rep Power
    26

    Default

    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: ");
          //.....
        }

  9. #9
    raqman is offline Member
    Join Date
    Sep 2009
    Posts
    37
    Rep Power
    0

    Default

    Tty the codes below:
    import java.lang.*;
    import java.io.*;

    public class BinaryToDecimal{
    public static void main(String[] args) throws IOException{
    BufferedReader bf= new BufferedReader(new InputStreamReader(System.in));
    System.out.print("Enter the Binary value: ");
    String str = bf.readLine();
    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.out.println("Please try once again.");
    System.exit(0);
    }
    }
    int i= Integer.parseInt(str,2);
    System.out.println("Decimal:="+ i);
    }
    }
    RAQ Report: free Java reporting tool.

Similar Threads

  1. Replies: 4
    Last Post: 10-26-2009, 10:17 PM
  2. Replies: 3
    Last Post: 07-25-2009, 01:44 PM
  3. Eclipse- Decimal to binary
    By queen_vee in forum New To Java
    Replies: 1
    Last Post: 02-24-2009, 02:17 PM
  4. Convert decimal to binary..pls help..newbie here
    By mephisto772 in forum New To Java
    Replies: 5
    Last Post: 02-12-2009, 08:17 AM
  5. Converts a binary number to a decimal
    By cachi in forum New To Java
    Replies: 1
    Last Post: 08-01-2007, 09:57 AM

Posting Permissions

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