2017-11-05 1 views
0

だから私は今~n私には整数nの操作をしませんが、私はこれを符号なし整数として読み取ることができる方法はありますか?Javaの符号なしIntで操作されていない

例えばの場合、私は実際に13が欲しいときに-51を得ます。 Javaでこれを行う方法はありますか?

たとえば、バイナリで50は110010です。数字が反転すると001101になるはずです。

+1

「〜50」が「13」になる方法を説明できますか?符号なし変換では、 '〜50'は' 4294967245'になります。 – Turing85

+0

@ Turing85コメントを編集しました。混乱させて申し訳ありません。 – idude

+1

先頭の数字を無視します。 'int'は32ビットを持ち、したがって、' 50 'の先頭のゼロはすべて '1'にも反転され、結果として' 4294967245'になります。 – Turing85

答えて

1

先頭のゼロビットを変更しない場合は、「バイナリではない」操作後に0に設定できます。

int invert(int n) { 
    int mask = (Integer.highestOneBit(n) << 1) - 1; 
    return (~n & mask); 
} 
0

は32ビットであり、これらすべてのリース:私たちが必要なのは、我々は他のすべてのビットをゼロに設定することができます1の上位ビットの数に等しいn中の数と11...1マスクを作成することですゼロは1になる。

関連する問題