level 12
pengzhenxx
楼主
可以编程方式实现乘法,除法等,今天晚上无聊按照书上的手算方法,写了个c语言小程序,确实没用到乘法,只用了位移和加法,逻辑非就实现了两个正整数相乘和相减。。。
那正真的乘法器算法又是怎样的呢??看看能不能用编程的方法实现乘法。。。
这是我写的c语言程序
#include<stdio.h>
void main()
{
int a,b,bb[32],i,t,sum=0,s,j=0;
printf("请输入a和b的值:");
scanf("%d%d",&a,&b);
t=b;
for(i=31;i>-1;i--)
{
bb[i]=t+(~((t>>1)<<1)+1);
t=t>>1;
}
for(i=0;i<32;i++)
printf("%d",bb[i]);
b=~b+1;
printf("\n\na-b=%d\n\n",b+a);
for(i=31;i>-1;i--)
{
if(bb[i]==1)
{
s=a<<j;
j++;
}
else
{
s=0;
j++;
}
sum+=s;
}
printf("a*b=%d\n\n",sum);
}
2013年03月02日 13点03分
1
那正真的乘法器算法又是怎样的呢??看看能不能用编程的方法实现乘法。。。
这是我写的c语言程序
#include<stdio.h>
void main()
{
int a,b,bb[32],i,t,sum=0,s,j=0;
printf("请输入a和b的值:");
scanf("%d%d",&a,&b);
t=b;
for(i=31;i>-1;i--)
{
bb[i]=t+(~((t>>1)<<1)+1);
t=t>>1;
}
for(i=0;i<32;i++)
printf("%d",bb[i]);
b=~b+1;
printf("\n\na-b=%d\n\n",b+a);
for(i=31;i>-1;i--)
{
if(bb[i]==1)
{
s=a<<j;
j++;
}
else
{
s=0;
j++;
}
sum+=s;
}
printf("a*b=%d\n\n",sum);
}