学习过C语言的同学都知道,再写代码的时候,位操作运算总比算数运算操作快,
本文就是用C语言提供的位运算实现两个数的加法。
本文使用的代码都经过调试正常并且能够运行,调试环境centos gcc 一下是实现代码,以及测试结果:
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char **argv)
{
int add_a,add_b;
int sum;
if(3!=argc)
printf("usage : bin_add , (#add_1) (#add_d)\n");
else
{
add_a= atoi(argv[1]);
add_b= atoi(argv[2]);
sum =add(add_a,add_b);
printf("(%d)+(%d)=%d\n",add_a,add_b,sum);
}
return 0;
}
int add(int temp_a,int temp_b)
{
int temp_c=0;
int temp_d=0;
temp_c=temp_a & temp_b; //求进位
temp_d=temp_a ^ temp_b; //求本位和
while(temp_c)
{
temp_c<<=1;
temp_b=temp_c;
temp_a=temp_d;
temp_c=temp_a & temp_b;
temp_d=temp_a ^ temp_b;
}
return temp_d;
}
代码测试:
[trageday@trageday Destop]$ gcc -o bin_add test.c [trageday@trageday Destop]$ ./bin_add 10 789 (10)+(789)=799 [trageday@trageday Destop]$ ./bin_add 1234 4567 (1234)+(4567)=5801 [trageday@trageday Destop]$ ./bin_add 1234 -456 (1234)+(-456)=778 [trageday@trageday Destop]$ ./bin_add -34 -456 (-34)+(-456)=-490
使用 & ^ << 等 位符实现加法运算,布布扣,bubuko.com
原文:http://blog.csdn.net/trageday_motata/article/details/35257625