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.

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

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

posted

0

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

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.

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