Java Converting Binary Numbers to Base 10 in Java - Program Help

  • Thread starter Thread starter courtrigrad
  • Start date Start date
  • Tags Tags
    Java Program
Click For Summary
The discussion revolves around writing a program to convert an array of binary numbers (0's and 1's) into a base 10 integer. The initial code provided has a flaw in its logic, as it incorrectly returns the variable `numValue` instead of the accumulated `sum`. To correctly compute the base 10 value, it is suggested to multiply each binary digit by 2 raised to the power of its index in the array, ensuring the calculation reflects the binary system accurately. For a boolean array, where `true` represents 1 and `false` represents 0, the conversion logic should be adjusted to check the boolean value directly. Additionally, clarification is sought on whether the binary representation should be read from left to right or right to left, which affects the calculation order. The key takeaway is to focus on returning the correct accumulated sum and adjusting the loop to handle the binary representation properly.
courtrigrad
Messages
1,236
Reaction score
2
Hello all:

I need to write a program that takes an array of 0's and 1's and converts them into base 10 numbers. Here is my code, but I can't get it to return the correct base 10 number.

Code:
 /*  This program returns a value in base 10 from an array of binary numbers.
 * 
 */


public class binary
{
    public int convertBaseTen( int [] a) // method takes an array
{
    int numValue=1;
    int sum=0;
    for(int i = 0; i< a.length; i++)   // loop through array a
    {
    if (a[i]==1)
     {
        sum+=numValue;
     }
        numValue*=2;
    }   
       return numValue;
}
    }

Any help is appreciated.

Thanks!
 
Technology news on Phys.org
dont just multiply the number in the array by 2, multiply it by 2^i
i being the integer varibale you are using in the loop to go through the array, because with eah successive element in the array, you are increasing by a power of 2.

for example if you have a number of let's say...5
5 = 101 in binary

101 = (1*2^0) + (0*2^4) + (1*2^2) = 5

if you loop through the array from lowest power of 2 to highest power of 2, and multiply the element by 2^i, and then keep a running total of all that, then you should get the correct answer.
 
Shouldn't you return sum
 
Code:
  /*  This program returns a value in base 10 from an array of binary numbers.
 * 
 */


public class binary
{
    public int convertBaseTen( int [] a) // method takes an array
{
    int numValue=1;
    int sum=0;
    for(int i = 0; i< a.length; i++)   // loop through array a
    {
    if (a[i]==1)
     {
        sum+=numValue;
     }
        numValue*=2;
    }   
       return numValue;
}
    }

How would I write this program which takes in a boolean where true = 1, and false = 0?

Example:

{true, true, false, true} = [1,1,0,1] and then convert this into base 10? Should I use math.pow?

Thanks
 
any ideas?
 
1st, return sum, not numValue.

Also, for a boolean array, your if statement would be if(a).

Another thing, is {1,1,0,1} representing 1101 or 1011? (Binary). If it's the second option, changing the return value to sum should be all that needs fixing. If not, you should start at a.length - 1 and go down to (and including) 0 at the array. Then it will calculate the last value and go to the first. In {1,1,0,1} would start at the last 1.

Hope that helped!
 
Learn If you want to write code for Python Machine learning, AI Statistics/data analysis Scientific research Web application servers Some microcontrollers JavaScript/Node JS/TypeScript Web sites Web application servers C# Games (Unity) Consumer applications (Windows) Business applications C++ Games (Unreal Engine) Operating systems, device drivers Microcontrollers/embedded systems Consumer applications (Linux) Some more tips: Do not learn C++ (or any other dialect of C) as a...

Similar threads

Replies
8
Views
2K
  • · Replies 0 ·
Replies
0
Views
626
  • · Replies 8 ·
Replies
8
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 13 ·
Replies
13
Views
4K
  • · Replies 0 ·
Replies
0
Views
1K
  • · Replies 25 ·
Replies
25
Views
2K
  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 6 ·
Replies
6
Views
1K
  • · Replies 3 ·
Replies
3
Views
4K