see also **operators -
bitwise shift operators**

■ You cannot depict leading bits with the **toBinaryString( ) **method of the **Integer** wrapper class. Yes it can show integer bits. Unfortunately it does so without providing
any leading zeroes. i.e.

**byte x = 1; **

** System.out.print( Integer.toBinaryString( x ) );**** **prints just** ****1**, not the** ****00000001** which you might have wanted

■ A quick rule to *visually read a negative bit string as a decimal
number* is this:

* Three steps: (1) Flip
the bits, (2) add in 1 more**, then (3)** read it as a (now negative)
number.*

* *

i.e. Let's read
**1111 1111 1111 1001****
**which happens to** **represent** ****minus seven. **The presently-zero 2 bit plus the
presently-zero 4 bit both become one bits in the ensuing flip to **0000
0000 0000 0110**, So that's **6** when the
bits are flipped after step one Then we
add in **1** more, in the second step, thus making it **7**,
and thirdly we read it as a negative value.
That means you read it as a negative **7**.

■ A quick rule to *visually convert a positive bit string to negative***
**is this:

* Two steps: (1)
Subtract one, then (2) flip all the bits**.*

i.e. This rule
says positive 1 should become all ones if negative. Let's see… Using a **byte**
example, positive **0000 0001** becomes **0000
0000** in step one when **1** is subtracted. Then it does indeed become **1111
1111** in step two when its bits are flipped. And **1111 1111** is
negative 1.