This week's book giveaway is in the OCMJEA forum.
We're giving away four copies of OCM Java EE 6 Enterprise Architect Exam Guide and have Paul Allen & Joseph Bambara on-line!
See this thread for details.
The moose likes Beginning Java and the fly likes Binary/Decimal Conversion Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of OCM Java EE 6 Enterprise Architect Exam Guide this week in the OCMJEA forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Binary/Decimal Conversion" Watch "Binary/Decimal Conversion" New topic
Author

Binary/Decimal Conversion

Tomas Elpacio
Greenhorn

Joined: Jul 26, 2001
Posts: 5
Does anyone know where I can find info about doing decimal to binary conversions and vice-versa for negative numbers. I understand that the high-order bit determines if it is negative or not, but I have not seen any illustrations/diagrams of this, which would help me with the learning process. Thanks in advance.
Peter Kristensson
Ranch Hand

Joined: Jul 02, 2001
Posts: 118
It's quite simple really
When the first (highest order) bit is 1, then the number is negative; you have to 2-complement it (invert all the digits and add 1). Then you've got the original number, convert it to decimal and stick a minus-sign in front of it and you're done!
Let me know if this isn't enough
/Peter
Tomas Elpacio
Greenhorn

Joined: Jul 26, 2001
Posts: 5
Thanks, Peter, but it is not quite getting through my thick nugget. Would you mind showing me an example of what a decimal, let's say -7, would look like in binary code for a 32 bit program/machine. Thanks in advance.
Peter Kristensson
Ranch Hand

Joined: Jul 02, 2001
Posts: 118
Ok, it's been a while since I did this by hand but here goes:
-7
first, lets get the binary number for 7(dec):
0000 0000 0000 0000 0000 0000 0000 0111
no we have to 2-complement it,
this is done by first 1-complementing (inverting) it:
1111 1111 1111 1111 1111 1111 1111 1000
then, we add 1 to the result:
1111 1111 1111 1111 1111 1111 1111 1001
this represents the decimal figure -7
so you see, the first (highest order) digit is 1, the number is negative.
just to make sure, I'll transform it back for ya, so you see that it works both ways:
number:
1111 1111 1111 1111 1111 1111 1111 1001
we notice that this is has a leding 1, i.e. it's negative.
we 1-complement it (invert):
0000 0000 0000 0000 0000 0000 0000 0110
add 1 to the result:
0000 0000 0000 0000 0000 0000 0000 0111
and the number 0111(bin) is equal to 7(dec)
just stick your minus-sign to it and you're done!
/Peter
Terence Doyle
Ranch Hand

Joined: May 30, 2001
Posts: 328
HI,
I've seen a number of posts with doubts on how to calculate 2's complement numbers.
The following is an explanation of how the calculation is made from a telecommunications course I'm doing:

Lets take an 8 bit binary code word as an example, for simplicity's sake. The principle is the same on larger numbers.
The bits represent powers of 2 like this:
1 1 1 1 1 1 1 1
128 64 32 16 8 4 2 1
if any bit is set to one it has that value.
so for example
1 0 1 0 1 0 1 0
(remember 128 64 32 16 8 4 2 1 )
would be 128+32+8+2 = 170
So from 0 to 128+64+32...+1( total of 255 ) is the value range
To allow negative numbers to be represented the largest bit is considered to be negative.
now the same example from above would be
-128+32+8+2 = -86
the value range now is from
- 128 to 127
I hope this helps when you try to calculate bit shifts ( though I need to practice the signed or unsigned myself )

Terry

[This message has been edited by Terence Doyle (edited August 24, 2001).]


Raising Flares debut album 'Ignition' out now

http://www.raisingflares.com

Terry Doyle <br />SCPJ 1.4 , SCWCD , SCMAD(Beta)
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Binary/Decimal Conversion