|
- #include <stdio.h>
- int v;
- void sum(int a,int b){
- v=0;
- for(int i=0;i<8;i++){
- int c1=(a>>i&1),c2=(b>>i&1);
- v|=(c1^c2&1)<<i;
- //printf("[%d] %d %d %d \n",i,c1,c2,v);
- if(c1&c2){
- v|=1<<i+1;
- }
- }
- printf("%d+%d=%d\n",a,b,v);
- }
- int main(int argc, char *argv[]){
- /*1+2=3,1+10=11,1+0=1
- 2+2=4,10+10=100,0+0=0
- 1+1=2,1+1=10,1+1=10*/
- sum(1,2);
- sum(2,2);
- sum(1,1);
- }
复制代码
看了下科普帖 https://www.zhihu.com/question/29432827 ,然后自己实现了一下 |
|