1 / 3
文档名称:

试验四 128乘法模拟器.doc

格式:doc   大小:60KB   页数:3页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

试验四 128乘法模拟器.doc

上传人:文库旗舰店 2019/7/19 文件大小:60 KB

下载得到文件列表

试验四 128乘法模拟器.doc

文档介绍

文档介绍:试验四128乘法模拟器一实验目的仿真不带符号的阵列乘法器二实验内容1,实验原理M位乘N位不带符号整数的阵列乘法中加法---*n个被加数可以用m*n个”与门”(m=n=5)为例(如下图):FA为一位全加器,FA的斜线方向为进位输出,竖线方向为和输出,而所有被加数项的排列和正常的A*B=,其时间延迟为(n-1),为了缩短加法时间,×n位时,需要n(n-1)个全加器和n²个”与”#include""#include""#definen10/*128位时10改成40即可*/#defineN2*nintInput(charh[n]){inti,j,;charc,p[n];for(i=0;i<n;i++){p[i]=0;}/*p[i]为辅助数组*/for(i=0;(c=getchar())!='\n';i++)/*输入转换,码形式*/{c=c-48;p[i]=c;}for(i--,j=n-1;i>=0;j--,i--){h[j]=p[i];}/*顺序移入另一数组*/for(i=0;i<n;i++)printf("%d",h[i]);printf("\n");/*验证输入的数*/}intMinus(chara[n],charb[n]){unsignedcharf[n][N],add[N],carry[N],remainder[N],result[N];/*两数每位相加范围可能超过char型128,故用unsignedchar(0~256)可保证不越位*/inti,j,l,m;for(i=0;i<n;i++)/*存放数组清零*/for(j=0;j<N;j++){f[i][j]=0;}for(j=n-1,l=0;j>=0;l++,j--)/*每位相加存入数组*/{m=N-1-l;for(i=n-1;i>=0;m--,i--){f[l][m]=a[i]*b[j];}}for(i=0;i<n;i++)/*检验并显示全部结果*/{for(j=0;j<N;j++){printf("%3d",f[i][j]);}printf("\n");}for(i=0;i<N;i++)/*数组清零*/{add[i]=0;carry[i]=0;remainder[i]=0;result[i]=0;}for(j=N-1;j>=0;j--){add[j]=f[0][j]+f[1][j];/*第一行和第二行的和*/carry[j-1]=add[j]/10;/*进位存入数组*/remainder[j]=add[j]%10;/*余数位存入数组*/}printf("\n");printf("\n");/*检验第一步*/for(i=0;i<N;i++)printf("%3d",carry[i]);printf("\n");/*第一行进位输出*/for(i=0;i<N;i++)printf("%3d",remainder[i])