Java Reference
In-Depth Information
1111 0111
This is called the 1 ' s complement form , and if you now add 1 to this, you get the 2's complement form:
1111 0111
Add one to this 0000 0001
and we get:
1111 1000
Now this looks pretty similar to the representation of −8 you got from subtracting +12 from +4. So just
to be sure, let's try the original sum of adding −8 to +12:
+12 is 0000 1100
Our version of −8 is 1111 1000
and you get:
0000 0100
So the answer is 4 — magic! It works! The carry propagates through all the leftmost 1's, setting them
back to zero. One fell off the end, but you shouldn't worry about that. It's probably the one you borrowed
from off the end in the subtraction sum you did earlier to get −8. In fact, you are making the implicit as-
sumption that the sign bit, 1 or 0, repeats forever to the left. If you try a few examples of your own, you'll
find it always works quite automatically. The really great thing is, it makes arithmetic very easy (and fast)
for your computer.
FLOATING-POINT NUMBERS
You often have to deal with very large numbers: the number of protons in the universe, for example, which
needs around 79 decimal digits. Clearly there are lots of situations where you need more than the 10 decimal
digits you get from a 4-byte binary number. Equally, there are lots of very small numbers: the amount of
time in minutes, for example, that it takes the typical car salesman to accept your cash offer on his lightly
used 1999 Honda Accord (only 387,604 miles, and keyless entry because the key got lost along the way. .
.). A mechanism for handling both these kinds of numbers is — as you might have guessed from the title of
this section — floating-point numbers.
A floating-point representation of a number is a decimal point followed by a fixed number of digits, mul-
tiplied by a power of 10 to get the number you want. It's easier to demonstrate than explain, so let's take
some examples. The number 365 in normal decimal notation would be written in floating-point form as the
following:
0.365E03
Here, the E stands for exponent and is the power of ten that the 0.365 bit (the mantissa) is multiplied by,
to get the required value. That is:
0.365 × (10 × 10 × 10)
which is clearly 365.
Now let's look at a smallish number:
.365E−04
This is evaluated as .365 × 10− 4 , which is .0000365 — exactly the time in minutes required by the car
salesman to accept your money and put up the “Closed” sign.
The number of digits in the mantissa of a floating-point number is called the precision , and depends on
the type of the floating-point number that you are using. The Java type float provides the equivalent of
approximately 7 decimal digits, and the type double provides around 17 decimal digits. The number of
Search WWH ::




Custom Search