2 進数の反対の数を取得したい (x--> -(x) および -(x) --> x を意味します)。
アルゴリズムは?すべてのビット(「1」を「0」、「0」を「1」)に変更し、それに「1」を追加することを考えました。大丈夫ですか ?
thnx
あなたのアルゴリズムは、2 の補数に対して正しいです。
-x = ~x + 1
補足として、次を使用します。
-x = ~x
符号の大きさの数値の場合:
-x = x ^ (1 << n)
n
は、ワード内の符号ビットのオフセットです。ここでは C 演算子表記法を使用しています。^
はビットごとの排他的 OR 演算子で<<
、左シフトです。
別の数値表現については、他の操作を使用する必要があります。
負の数の表現方法によって異なります。2 の補数表現が必要ですか? 補数表現が必要ですか?
詳細については、ウィキペディアを確認してください