-1

入力が 2 つの整数値であるとします。2 つの整数値を 2 進数に変換し、2 進数の加算を実行して、桁上げを無視した結果 (同等の整数) を返したいと考えています。どうすればこれを行うことができますか。

頭に浮かぶアイデアは、それらを何らかの方法でバイナリ文字列に変換し、バイナリ加算のアルゴリズムを使用して、キャリーを無視することです (キャリーが存在する場合は文字列からキャリー文字を削除します)。

サンプル入力

1 つの数字 : 1 2 つ目の数字 : 3

サンプル出力

2 説明: 合計の最下位ビットは 1 + 1 = 0 次のビットは 0 + 1 = 1 (前のビットからの桁上げは破棄される) 答えは 2 進数で 10、つまり 2 です。

4

2 に答える 2

6

おそらく、指定された入力に対して次の出力を提供するビット単位の XOR (排他的 OR) を探しているでしょう。

^ | 0 | 1
--+---+--
0 | 0 | 1
--+---+--
1 | 1 | 0 

バイナリ加算 ( 1+1 = 10) のように動作しますが、両方のオペランドが である場合、オーバーフローは無視されます1

int a = 5; // 101
int b = 6; // 110 

a ^ b; // 3 or 011
于 2013-01-05T16:58:22.597 に答える
2

XORこれは、バイナリの 2 つの整数の 1 つにすぎません。Javaでできること

result = v1 ^ v2;
于 2013-01-05T16:57:19.933 に答える