おちゃめさんがおっしゃるところの111111111111111111111111111111010が、なぜマイナス6になるのか、お分かりですか? 2進数の下位ビットから数えてn番目のビットは、2のn-1乗の数を表すことはご存じと思います。 では、最上位ビット(最下位ビットから数えて32番目のビット)は、2の31乗を表すかと言うと、そうではなく、2の31乗をマイナスした値になります。マイナスなのは最上位ビットだけで、あとは普通にプラスです。 面倒かも知れませんが、これらを全て足してやれば、マイナス6になるのがお分かりいただけるかと。 結論を言えば、NOT N==-1-N です。