に失敗:ビット単位のほかには、Java上で動作しますが、私はLeetCode上の質問を読んそして、この1で出くわしたルビー
「二つの整数a、bの合計を計算しますが、あなたが使用を許可されていません演算子+と - "
ウェブ上でよくある質問です。この質問のための
Javaソリューションは、次のとおりです。正常に動作します
public int getSum(int a, int b) {
while(b!=0){
int c = a&b;
a=a^b;
b=c<<1;
}
return a;
}
。しかし、Rubyの同じコード:
def get_sum(a, b)
while b != 0 do
c = a & b;
a = a^b;
b = c << 1;
end
return a;
end
は機能しません。実際には、 'a'と 'b'の両方が正数であれば動作しますが、 'a'または 'b'のいずれかが負数であると失敗します。私は問題がキャリアをシフトすることに関連していると思うが、それもJavaで同じではない?皆さんはRubyで何が違うか考えていますか?
ありがとうございます。
が見るので、それは実際には正の数であるようにビット演算の後に負の数を想定して固定サイズを持っていないので、 [この質問](http://stackoverflow.com/questions/15359807/signed-and-unsigned-integers-in-ruby) – samgak
ちょうど参考として:なぜあなたの期待ですか?同じプログラムを2つの言語で書き留めることができるという事実は、各要素とタイプが両方の言語で**同じ意味**を持つことを絶対に意味するものではありません。私は、「すべてがまったく同じです」と言うのは、かなり例外的な状況になると言います。 – GhostCat