ビット演算とシフトのみによる加算ルーチンです。
2進数加算結果は、A⊕B⊕carryになります。
加算のキャリーは、(A&B)|(A&carry)|(B&carry)になります。
正確に知りたい方はベン図と真理表を書いて求めて下さい。
対称性があるので、ベン図はきれいな三つ葉模様になります。
int addbit()が本体です。
C言語で書かれています。
addbit.c
int addbit(int a,int b) {
int cy=0,t=1,s=0;
while(t) {
s|=(a&t)^(b&t)^cy;
cy=(t&(a&b|cy&b|cy&a))<<1;
t<<=1;
}
return(s);
}