UVa 10469 To Carry or not to Carry (异或)

32位加法器设计错误解析
本文探讨了一个学生在数字逻辑课程中实现32位加法器时出现的设计错误,即始终忽略进位位导致的计算结果异常。通过一个具体的例子说明了这种错误如何发生,并提供了一个简单的C语言程序来模拟这种错误行为。

10469 - To Carry or not to Carry

Time limit: 3.000 seconds

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=1410


6+9=15 seems okay. But how come 4+6=2?

You see, Mofiz had worked hard throughout his digital logic course, but when he was asked to implement a 32 bit adder for the laboratory exam, he did some mistake in the design part. After tracing the design for half an hour, he found his flaw!! He was doing bitwise addition but his carry bit always had zero output. Thus,

 4 = 00000000 00000000 00000000 00000100
+6 = 00000000 00000000 00000000 00000110
----------------------------------------
 2 = 00000000 00000000 00000000 00000010
Its a good thing that he finally found his mistake, but it was too late. Considering his effort throughout the course, the instructor gave him one more chance. Mofiz has to write an efficient program that would take 2 unsigned 32 bit decimal numbers  as input, and produce an  unsigned 32 bit decimal number  as the output adding in the same was as his circuit does.

Input

In each line of input there will be a pair of integer separated by a single space. Input ends at EOF.

Output

For each line of input, output one line -- the value after adding the two numbers in the "Mofiz way".

Sample Input

4 6
6 9

Sample Output

2
15


0+0=0

0+1=1

1+0=1

1+1=0

这不异或么。。


完整代码:

/*0.015s*/

#include<cstdio>

int main()
{
	int a, b;
	while (~scanf("%d%d", &a, &b))
		printf("%d\n", a ^ b);
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值