欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

用C语言实现的计算机基础:原码一位乘法详细解析

最编程 2024-08-01 08:23:04
...
#include<stdio.h> int Binary_add(int* Binary1,int* Binary2)//自定义的用于辅助的紧耦合函数,用于实现本题中二进制的加法运算 { int i; for(i=31;i>0;i--) { Binary2[i]+=Binary1[i]; if(Binary2[i]>1) { Binary2[i]-=2; Binary2[i-1]++; } } if(Binary2[0]>1) { Binary2[0]-=2; return 1; } else return 0; } int main(void) { int Product1_register[32]; int Product2_register[32]; int i,j; int PY_register[64]; int C_register; printf("请输入需要进行相乘的两个二进制原码(32位):\n"); for(i=0;i<32;i++) { scanf("%d",&Product1_register[i]); } for(i=0;i<32;i++) { scanf("%d",&Product2_register[i]); } for(i=0;i<32;i++) { PY_register[i]=0; } for(i=32;i<64;i++) { PY_register[i]=Product2_register[i-32]; } printf("被乘数寄存器中的值保持不变如下:\n"); for(i=0;i<32;i++) { printf("%d",Product1_register[i]); } printf("\n"); printf("递推次数\t乘积寄存器\t 乘数寄存器\n"); printf("第0次递推\t"); for(j=0;j<64;j++) { if(j==32)printf("\t"); printf("%d",PY_register[j]); } printf("\n"); for(i=0;i<32;i++) { if(PY_register[63]==1) { C_register=Binary_add(Product1_register,PY_register); } for(j=63;j>0;j--) { PY_register[j]=PY_register[j-1]; } PY_register[0]=C_register; printf("第%d次递推\t",i+1); for(j=0;j<64;j++) { if(j==32)printf("\t"); printf("%d",PY_register[j]); } printf("\n"); } return 0; }

推荐阅读