ich durch die Fragen auf LeetCode Lesen und stieß auf mit diesem:Bitwise hinaus arbeitet auf Java aber nicht auf Ruby-
„Berechnen Sie die Summe von zwei ganzen Zahlen a und b, aber Sie sind nicht zu verwenden, erlaubt der Operator + und - "
Was ist eine häufige Frage im Internet.
Java-Lösung für diese Frage lautet:
public int getSum(int a, int b) {
while(b!=0){
int c = a&b;
a=a^b;
b=c<<1;
}
return a;
}
der gut arbeitet. Aber der gleiche Code in Ruby:
def get_sum(a, b)
while b != 0 do
c = a & b;
a = a^b;
b = c << 1;
end
return a;
end
funktioniert nicht. Tatsächlich funktioniert es, wenn sowohl "a" als auch "b" positive Zahlen sind, aber nicht, wenn entweder "a" oder "b" eine negative Zahl ist. Ich vermute, dass das Problem mit der Verschiebung der Träger verbunden ist, aber ist es nicht auch in Java das gleiche? Habt ihr eine Idee was in Ruby anders ist?
Vielen Dank im Voraus.
sehen [diese Frage] (http://stackoverflow.com/questions/15359807/signed-and-unsigned-integers-in-ruby) – samgak
Nur als Randnotiz: warum Ihre Erwartung? Die Tatsache, dass Sie das gleiche Programm in zwei Sprachen schreiben können, bedeutet nicht, dass jedes Element und jeder Typ in beiden Sprachen die absolut gleiche Bedeutung hat **. Ich würde sogar sagen, dass "alles absolut gleich ist" eine eher außergewöhnliche Situation wäre. – GhostCat