UVa 10469

UVa 10469

題目

http://domen111.github.io/UVa-Easy-Viewer/?10469

有個人在學如何用位元運算進行 32-bit 正整數的加法,但是他搞砸了

現在他設計出來的程式不能進位,請你嘗試設計出跟他一樣的加法器

想法

我們可以考慮兩種情況

  1. 原本需要進位
  2. 原本不需要進位

如果說原本就需要進位,那就表示在二進位底下兩個 bit 都是 $1$,既然不進位,那這個位置最後會留下 $0$,而下一位不會 $+1$

反之,如果原本就不需要進位的話,那就直接相加即可

也就是說,考慮兩個 bit 的情況,整理如下表

1 0
1 0 1
0 1 0

發現到這跟 xor 就是一樣的道理

Code

1
2
3
4
5
6
7
8
9
10
//By Koios1143
#include<iostream>
using namespace std;
int n, m;
int main(){
while(cin>>n>>m){
cout<<(n^m)<<"\n";
}
return 0;
}