資源簡介
二進制加減法,多種乘法方式實現二進制乘法。

代碼片段和文件信息
#include?
#include?
#define??MAX_LEN???20
int?init(int?*Aint?*B)
{
int?in;
while(1==scanf(“%d“&n))
if(n?>?0)?break;
for(i=MAX_LEN-n;i? scanf(“%d“A+i);
for(i=MAX_LEN-n;i? scanf(“%d“B+i);
return?n;
}
void?bits_display(int?*Aint?n)
{
for(int?i=MAX_LEN-n;i printf(“%d“A[i]);
printf(“\n“);
}
int?bits_add(int?*Aint?*Bint?*Cint?n)
{
int?icarrylen;
for(i=MAX_LEN-1carry=0;i>=MAX_LEN-n;i--)
{
C[i]=A[i]+B[i]+carry;
if(C[i]?>=?2)
{
carry=1;
C[i]=C[i]%2;
}
else
carry=0;
}
len=n;
if(carry){?C[i]=carry;len++;}
return?len;
}
void?bits_sub(int?*Aint?*Bint?*Cint?n)
{//A>B?A-B
int?icarry;
for(i=MAX_LEN-1carry=0;i>=MAX_LEN-n;i--)
{
C[i]=A[i]-B[i]-carry;
if(C[i]?0)
{
carry=1;
C[i]+=2;
}
else
carry=0;
}
C[i]=A[i]-carry;
}
int?bits_multi(int?*Aint?*Bint?*Cint?n)?//a*b(n?bits)
{
if(n==1)
C[MAX_LEN-1]=A[MAX_LEN-1]*B[MAX_LEN-1];
else{
int?a[MAX_LEN]={0}b[MAX_LEN]={0}c[MAX_LEN]={0}d[MAX_LEN]={0};
int?ijmid;
if(n%2)?n++;
mid=n/2;
for(i=MAX_LEN-mid-1j=MAX_LEN-1;i?>=?MAX_LEN-n;i--j--)
{
a[j]=A[i];
c[j]=B[i];
}
for(i=MAX_LEN-1;i?>=?MAX_LEN-mid;i--)
{
b[i]=A[i];
d[i]=B[i];
}
int?ac_lenbd_len;
int?ac[MAX_LEN]={0}bd[MAX_LEN]={0}a_bc_d[MAX_LEN]={0}ab_cd[MAX_LEN]={0}ac_bd[MAX_LEN]={0};
ac_len=bits_multi(acacn-mid);
bd_len=bits_multi(bdbdmid);
int?a_b[MAX_LEN]={0}c_d[MAX_LEN]={0};
int?a_b_lenc_d_lena_bc_d_lenac_bd_len;
a_b_len=bits_add(aba_bn-mid);
c_d_len=bits_add(cdc_dmid);
a_bc_d_len=bits_multi(a_bc_da_bc_d(a_b_len>c_d_len?a_b_len:c_d_len));
ac_bd_len=bits_add(acbdac_bd(ac_len>bd_len?ac_len:bd_len));
bits_sub(a_bc_dac_bdab_cd(a_bc_d_len?>?ac_bd_len?a_bc_d_len?:?ac_bd_len));
for(i=MAX_LEN-2*n;i if(i else?ac[i]=0;
}
for(i=MAX_LEN-n-mid;i if(i else
ab_cd[i]=0;
}
bits_add(acbdC2*n);
bits_add(ab_cdCC2*n);
}
return?2*n;
}
int?main()
{
int?A[MAX_LEN]B[MAX_LEN];
int?C[2*MAX_LEN]={0};//store?result
int?n=init(AB);
printf(“A:“);bits_display(An);
printf(“B:“);bits_display(Bn);
bits_multi(ABCn);
printf(“A*B:“);bits_display(C2*n);
return?0;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????2446??2011-09-07?15:41??bits_multi.cpp
?????文件????????5863??2015-12-10?17:36??c語言課程設計二進制計算器.c
?????文件?????????525??2015-12-10?17:48??二進制乘法.txt
?????文件????????6876??2015-12-10?17:49??二進制乘法2.txt
- 上一篇:crm vc++源代碼
- 下一篇:C語言編程流程圖自動生成
評論
共有 條評論