C语言移位实现加减乘除

来源:本站
导读:目前正在解读《C语言移位实现加减乘除》的相关信息,《C语言移位实现加减乘除》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《C语言移位实现加减乘除》的详细说明。
简介:本文主要讲了移位实现加减乘除,希望对你的虚席有所帮助。

//注意,对于int 型, 左移没事,右移注意符号位,应改为unsigned int

int add(int a,int b)

{

int c;

while(c=a&b)//保留当前要进位的位, 为0表示无进位

{

a = a^b;//异或是无进位的加法

b=c<<1; //左移相当于进位

}

return a^b;//无进位则异或等同于加法

}

int mul(int a,int b)

{

int c, i;

c= 0;//累加器

for( i =0; i<32 ;i++)

{

if(b&(1<<i))

c = add(c , a << i)

}

}

int minus(int a, int b)

{

return add(a,-b);

}

//循环移n位 a = (a<<n)||(a>>32-n) 注意是逻辑右移

unsigned int int_p(unsigned int a ,unsigned int b)

{

int i;

unsigned int m=0;

for(i=1;i<=32; i=add(i,1))// i++也用到了加法呢

{

m = m<<1 | a>>31; //把a左移进m直到 m >= b, 则可商1

a = a<<1;

if( m >= b)

{

m = minus(m,b);

a = add(a , 1);

}

}

return a;

}

提醒:《C语言移位实现加减乘除》最后刷新时间 2024-03-14 00:58:04,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《C语言移位实现加减乘除》该内容的真实性请自行鉴别。