Win a copy of The Way of the Web Tester: A Beginner's Guide to Automating Tests this week in the Testing forum!

# Binary Numbers Comparison.

Nathan Heimdall
Greenhorn
Posts: 20
Hello all ,

I have two arbitrary length binary numbers.
ex : 100011111 & 1111001110001
Is it possible to compare them using only there 0s & 1s representations.
i.e I don't want to convert them to base 10 & compare them (probably using BigInteger).

If its possible how can I implement it
Thanks.

K. Tsang
Bartender
Posts: 3548
16
You don't have to convert to decimals. Every bit is 2^x so you at least need to find the bits that are 1 and calculate what x is for that bit. Without converting to decimal I think the faster way to get the most significant bit that is 1 of each number and compare that. Oh you do need to watch out for negatives (such as first bit is 1).

Piet Verdriet
Ranch Hand
Posts: 266
Heimdall Ksu wrote:Hello all ,

I have two arbitrary length binary numbers.
ex : 100011111 & 1111001110001
Is it possible to compare them using only there 0s & 1s representations.

How are you storing these numbers? As Strings?

Heimdall Ksu wrote:i.e I don't want to convert them to base 10 & compare them...

In Java, all numbers are in base 10. Yes, you can use octal or hexadecimal literals, but their value will still be stored as a decimal (base 10).

Steve Fahlbusch
Bartender
Posts: 605
7
In Java, all numbers are in base 10. Yes, you can use octal or hexadecimal literals, but their value will still be stored as a decimal (base 10).

Didn't you mean that all numbers (ie: numeric primitives) are stored in binary and then by default formattted for output as decimal?

Nathan Heimdall
Greenhorn
Posts: 20
Yes I am storing them as strings.
I padded them to equal length and then used the compare function in String class and got the result I was looking for.

Thanks guys,

Campbell Ritchie
Sheriff
Posts: 50702
83
I suspect String.compareTo works as much from luck as anything else