安全オファーを証明するために元のタイトルは、行き止まりを掘削しました
2進数の1の数を求めます
負の問題点、あなたが否定的なので、負の右シフト演算の性質を維持したいので、右側から0xFFFFFFFFにいくつかの変更後、最初の場所で再充てん1になります。
あなたは符号ビット否定を削除したい場合は、使用を検討してください:
int型、A = -127;
= A ^(0×80000000)。
まず、1つのXOR 0はゼロになりつつは0x80000000は、32第1にある、または31ビットのデータの後に変化するように、結果ではない0 XOR 0。
これに基づいて権利は最初のものの番号以外の番号に加えて得られます。
最後に、負の第一位の数が記入します。
左シフトすることにより処理した場合、実際には、数1の形態で得られ、そのため、完全に不必要なトラブルことができます。
また、安全提供ソリューションが証明します:
(N-1)&N。
第1の位置Mの右ないnは、次いで、0であると仮定し、N-1は、その結果、mが1ですべての権利mは、0です。すべて0に設定し、N-1、N mは右およびM&操作であろう。
故に
一方、(N)
(N-1)&N。
N 1は、順次、その権利を排除します