两个n位二进制整数相加的问题

考虑把两个n位二进制整数加起来,这两个整数分别存储在两个n元数组A和B中,这两个整数的和应按二进制形式存储在一个n+1元数组中。

伪代码:

ADD-BINARY(A, B):
  C = new integer[A.length + 1]

  carry = 0
  for i = 1 to A.length
      C[i] = (A[i] + B[i] + carry) % 2  // remainder
      carry = (A[i] + B[i] + carry) / 2 // quotient
  C[i] = carry

  return C

C++代码:

void Add_Binary()
{
	int A[5] = { 0, 1, 1, 0, 0 };
	int B[5] = { 1, 1, 0, 1, 0 };
	int C[6];
	int carry = 0;
	int i;
	for (i = 4; i >=0; --i)
	{
		C[i+1] = (A[i] + B[i] + carry) % 2;
		carry = (A[i] + B[i] + carry) / 2;
	}
	C[i+1] = carry;
}

可以用于两个大数相加,(a+b+carry)%2为余数,(a+b+carry)/2为商,其中carry为进位。

来自算法导论

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值