首页 > 代码库 > 使用 & ^ << 等 位符实现加法运算
使用 & ^ << 等 位符实现加法运算
学习过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
其实主要就是解决加法过程中分开 “本位和” 和 “进位和” ;一次一次把进位加到自己的位置上就可以了。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。