Non sono c...., è giusto e importante soffermarsi bene su quello che si legge. I libri sulla programmazione non sono romanzi che li si legge in es. 2 giorni e via. Bisogna ragionarci di più, non ti preoccupare.
Innanzitutto attenzione alla differenza (molto grossa) tra un NOT "bitwise" (sui bit) e un NOT "logico" (su espressioni boolean).
Prova questo:
codice:int i = 21; int inot = ~i; System.out.println(i); System.out.printf("%32s%n", Integer.toBinaryString(i)); System.out.println(inot); System.out.printf("%32s%n", Integer.toBinaryString(inot));