トピック:
書き込み機能、および2つの整数の和、機能がインビボで使用されなくてもよい+が必要、 - 、*、/四則記号。
分析:
さらには、別々に計算される計算の最も原始的な方法に還元及び非キャリー及びキャリー、最後の二つの部分一緒に、およびです。私たちは、<<を使用して求めるアンドキャリー、^とないキャリーを求めることができます。
次いで、XORを使用し、5は、例えば、バイナリ101,9 + 9,5は、バイナリ1001、すなわち= 1 5&9、2つの数値を運ぶためにシークした後、左の、2(0010)は、キャリーであります持ち運びや、^ 101 = 1100 1001、その後、キャリーが0である&^まで使用しないで求めています。
手順:
C ++
クラスのソリューション{ パブリック: int型の追加(int型 NUM1、int型NUM2) { もし(NUM1 == 0 ) リターンからnum2; もし(num2の== 0 ) の戻りNUM1。 int型キャリー= 1 ; 一方、(NUM2!= 0 ){ キャリー =(NUM1&NUM2)<< 1 。 NUM1 = NUM1 ^ num2の。 NUM2 = キャリー。 } リターンNUM1。 } }。
ジャワ
パブリック クラスソリューション{ 公共の int型の追加(int型 NUM1、int型からnum2){ 場合(NUM1 == 0 ) リターンからnum2; もし(num2の== 0 ) の戻りNUM1。 int型のキャリー。 一方、(NUM2!= 0 ){ キャリー =(NUM1&NUM2)<< 1 。 NUM1 = NUM1 ^ num2の。 NUM2 = キャリー。 } リターンNUM1。 } }