これは昨日の私の質問へのフォローアップです:
CMS は親切にも、C でビット単位の演算子を使用して 2 つの数値を加算する次の例を提供してくれました。
#include<stdio.h>
int add(int x, int y) {
int a, b;
do {
a = x & y;
b = x ^ y;
x = a << 1;
y = b;
} while (a);
return b;
}
int main( void ){
printf( "6 + 3 = %d", add(6,3));
printf( "6 - 3 = %d", add(6,-3));
return 0;
}
それはうまく機能し、次のようにPythonに移植しました。
def add(x, y):
while True:
a = x & y
b = x ^ y
x = a << 1
y = b
if a == 0:
break
return b
print "6 + 3 = %d" % add(6,3)
print "6 - 3 = %d" % add(6,-3)
どちらも足し算に使用でき、C プログラムは引き算にも使用できます。ただし、Python プログラムは減算のために無限ループに入ります。私はこれを理解しようとしており、さらに実験するためにここにプログラムを投稿しました: http://codepad.org/pb8IuLnY
Cがこれを処理する方法とCPythonがこれを処理する方法に違いがある理由を誰かアドバイスできますか?