回复:计算机程序题

假定是32位:

void fulladd(int a, int b, int& sum, int& carry) {
if (a == 0 && b ==0) {
sum = carry = 0;
} else if (a == 1 && b == 1) {
sum = carry = 1;
} else {
sum = 1; carry = 0;
}
}

... get n

int sum, carry = 0;

for (int count = 0xFFFFFFFF; count&1; count = count>>1) {
fulladd(n&1, 1, sum, carry);
n = (sum 1);
}

if (carry == 1) cout else cout
基本上就是做32次全加.上面的代码可能需要调试一下,但原理应该就是这样了.

所有跟帖: 

可以快一点儿 -butdie- 给 butdie 发送悄悄话 butdie 的博客首页 (255 bytes) () 12/22/2007 postreply 01:37:50

请您先登陆,再发跟帖!