600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 整数乘法c语言移位实现 C语言 用移位 异或 与运算实现加法

整数乘法c语言移位实现 C语言 用移位 异或 与运算实现加法

时间:2021-12-28 04:59:44

相关推荐

整数乘法c语言移位实现 C语言 用移位 异或 与运算实现加法

C语言用移位、异或、与运算实现加法

一、说明

计算机整数的加减乘除就是依靠位运算实现的。

比如整数的运算:加法:通过异或、与、移位实现;减法:a-b其实就是a+(-b);乘法:5*3其实就是5+5+5;除法:7/2其实就是

用7不断减2,看看能够减几次,整数运算中,7/2结果为3。

异或xor:不同为1,相同为0。比如:

00001010

xor 00001001

----------------

00000011

与&:同时为1结果是1,否则为0。比如:

00001010

& 00001001

----------------

00001000

用移位、异或、与运算实现加法的原理解释:

二、计算2+3=?

1、用a存放2,b存放3

a:00000010

b:00000011

2、计算a xor b 的值,并将结果存到c

00000010

xor 00000011

------------

00000001

c的值为:00000001

3、计算a & b的值,并将结果左移1位后存到b

00000010

& 00000011

------------

00000010

00000010<<1值为00000100

将00000100存到b

b的值为:00000100

4、若b的值为0,c就是结果,若不为0,将c的值赋给a并重复步骤2、3;直至b为0。

a值:00000001

b值:00000100

00000001

xor 00000100

------------

00000101

c的值为:00000101

00000001

& 00000100

------------

00000000

00000000<<1值为00000000

将00000000存到b

b的值为:00000000

b值为0,c值00000101就是结果,那么2+3=5 (00000101就是二进制的5)

三、源文件

plus.c文件

#include

int Plus(int a,int b);//函数声明

int main(int argc, char *argv[])

{

int a = 2;

int b = 3;

printf("2+3=%d\n",Plus(a,b));

return 0;

}

int Plus(int a,int b)

{

int c = a^b;//^异或

b = (a&b)<<1;//与运算、左移1位

while(b)//当b不为0时重复执行

{

a = c;

c = a^b;

b = (a&b)<<1;

}

return c;//当b=0时,返回结果

}

四、效果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。