This week's book giveaways are in the Java EE and JavaScript forums.
We're giving away four copies each of The Java EE 7 Tutorial Volume 1 or Volume 2(winners choice) and jQuery UI in Action and have the authors on-line!
See this thread and this one for details.
The moose likes Java in General and the fly likes How to convert a Negative Binary Number to Decimal Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of The Java EE 7 Tutorial Volume 1 or Volume 2 this week in the Java EE forum
or jQuery UI in Action in the JavaScript forum!
JavaRanch » Java Forums » Java » Java in General
Bookmark "How to convert a Negative Binary Number to Decimal" Watch "How to convert a Negative Binary Number to Decimal" New topic
Author

How to convert a Negative Binary Number to Decimal

Muhammad sibtain
Greenhorn

Joined: Aug 31, 2001
Posts: 17
I am not able to convert a binary number to decimal by applying the same technique that we normally use to convert a positive binary e.g.
if i want to convert 00000111 the i can convert it by this
(0*2^7)+(0*2^6)+(0*2^5)+(0*2^4)+(0*2^3)+(1*2^2)+(1*2^1)+(1*2^0)
0 + 0 + 0 + 0 + 0 +( 1*4 )+( 1*2 )+( 1*1 )
0 + 0 + 0 + 0 + 0 + 4 + 2 + 1
the total of these = 7
00000111 = 7

and
11111000 = -7
if i use the same rule it is giving some thing else in decimal
Please help me to do so
Regards
Sibtain
David O'Meara
Rancher

Joined: Mar 06, 2001
Posts: 13459

The short answer is that we use 2s Complement representation for storing numbers, this allows us to store both positive and negative numbers.
For more info, see the relevant story from the Javaranch campsite
(do a search for "SIGNED" to find the specific bit)
Dave.
Muhammad sibtain
Greenhorn

Joined: Aug 31, 2001
Posts: 17
Thanks for your quick response David but, My problem is not this that how java put a negative number in memory i now it perform 2s complement and then place it in memory. My problem is this if i wannt to convert that negative binaray number manually what formula should i apply for it??
Regards
Sibtain
Peter Kristensson
Ranch Hand

Joined: Jul 02, 2001
Posts: 118
There's a thread on this in the java in general forum, hope it helps
http://www.javaranch.com/ubb/Forum33/HTML/003252.html
/Peter
John Lee
Ranch Hand

Joined: Aug 05, 2001
Posts: 2545
Change negative into absolute value:
Two steps:
1) Deduct 1 form original binary;
2) Switch all byte of binary number;
Now you get the absolute value of the nagative. Follow normal procedure.
Anonymous
Ranch Hand

Joined: Nov 22, 2008
Posts: 18944
Originally posted by Muhammad sibtain:
I am not able to convert a binary number to decimal by applying the same technique that we normally use to convert a positive binary e.g.
if i want to convert 00000111 the i can convert it by this
(0*2^7)+(0*2^6)+(0*2^5)+(0*2^4)+(0*2^3)+(1*2^2)+(1*2^1)+(1*2^0)
0 + 0 + 0 + 0 + 0 +( 1*4 )+( 1*2 )+( 1*1 )
0 + 0 + 0 + 0 + 0 + 4 + 2 + 1
the total of these = 7
00000111 = 7

and
11111000 = -7
if i use the same rule it is giving some thing else in decimal

11111000 would equal -7 in a one-complement binary notation. In two-complement notation (which is a bit more popular) -7 would be represented by 1111001. Here goes; assume we're talking 8 bits in total where the leftmost bit is the sign bit. Jot down the following numbers, from left to right: 128, 64, 32, 16, 8, 4, 2, 1.
For any positive number (the leftmost bit is 0), say, 00000111, take the corresponding numbers you've just jotted down, where a bit equals 1, so here you get 4, 2, 1. Add these numbers: 4+2+1= 7.
Now for a negative number (the leftmost bit equals 1), say, 11111001, take the corresponding numbers you've just jotted down, where a bit equals 0, here you get 4, 2. Add these numbers: 4+2=6 and add one (that's the two-complement trick), so the result equals 7, but the number is negative, so the final result equals -7.
For one-complement representation, the 'add one to the result' step can be omitted.
kind regards,
Jos
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: How to convert a Negative Binary Number to Decimal