组成原理实验Word文档下载推荐.docx
- 文档编号:19253475
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:15
- 大小:45.80KB
组成原理实验Word文档下载推荐.docx
《组成原理实验Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《组成原理实验Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
intNum_Cls=0;
charContinue=0;
char*C_In=(char*)malloc(sizeof(char)*7);
char*C_Out0=(char*)malloc(sizeof(char)*16);
char*C_Out1=(char*)malloc(sizeof(char)*16);
char*C_Out2=(char*)malloc(sizeof(char)*16);
char*C_Out3=(char*)malloc(sizeof(char)*16);
a:
Num=0;
Num1=0;
Num_0=0;
Num_1=1;
Num_Cls=0;
Continue=0;
printf("
***原码,反码,补码,移码实验***\n\n\n\n"
);
***本程序采用16位二进制范围内的原码,反码等转换***\n\n***输入时请注意范围为-32768~32768***\n\n\n"
请输入十进制数值:
\n"
inti=0;
while(i<
7)
{
C_In[i]=0;
C_Out0[i]=0;
C_Out1[i]=0;
C_Out2[i]=0;
i++;
}
scanf("
%s"
C_In);
system("
cls"
您输入的十进制数为:
%s\n\n"
DecimalToBinary(C_In,C_Out0);
%s的原码为:
%s\n"
C_In,C_Out0);
getchar();
getchar();
//反码的变换过称
TrueToComplement(C_Out0,C_Out1);
while(C_Out0[Num]!
='
\0'
)
Num++;
while(C_In[Num1]!
Num1++;
for(Num_Cls=1;
Num_Cls<
=Num;
Num_Cls++)
printf("
如果原码为正数的话,反码各位的数值不变,如果为负数的话则依次取反\n"
Num_1=Num;
for(Num_0=Num1+Num-Num_Cls+11;
Num_0>
1;
Num_0--)
{
printf("
"
}
\30\n"
\31\n"
%s的反码为:
"
for(Num_0=Num;
0;
if(Num_0>
Num_Cls)
{
printf("
}
else
%c"
C_Out1[Num-Num_0]);
system("
C_In,C_Out1);
//补码的变换过称
ComplementToComplemental(C_Out0,C_Out2);
boolCase=false;
boolCase1=true;
补码由后向前第一个1的后面所有数的不变,前面的数值依次取反\n"
%s的补码为:
C_Out2[Num-Num_0]);
if(C_Out2[Num-Num_0]=='
1'
{
Case=true;
}
getchar();
if(Case==true&
&
Case1==true)
此时查找到第一个以后,如果为负数前面的所有数值采用取反,如果为正数则保持不变\n"
Case1=false;
getchar();
system("
C_In,C_Out2);
//移码的变换过程
TrueToFrame(C_Out2,C_Out3);
for(Num_Cls=Num-1;
Num_Cls>
Num_Cls--)
移码:
当原码为正数的时候保持不变,为负数的时候除符号位外依次向右移位\n"
if(C_Out0[0]=='
0'
Num_1=Num;
for(Num_0=Num1+Num-Num_Cls+11;
%s的移码为:
C_In,C_Out3);
for(Num_0=Num;
if(Num_0<
printf("
else
C_Out3[Num-Num_0]);
else
for(Num_0=Num1+Num-Num_Cls+12;
Num_Cls-1)
}
继续请输入Y:
%c"
&
Continue);
if(Continue=='
y'
gotoa;
free(C_In);
free(C_Out0);
free(C_Out1);
free(C_Out2);
return0;
voidDecimalToBinary(char*In_Decimal,char*Out_Binary)
intj=0;
inta=0;
int*Binary=(int*)malloc(sizeof(int)*16);
16)
Binary[i]=0;
i=0;
boolSign=true;
intDecimal=0;
while(In_Decimal[j]!
j++;
if(In_Decimal[0]=='
-'
a=1;
Sign=false;
for(;
a<
j;
a++)
Decimal+=((int)In_Decimal[a]-48);
Decimal*=10;
Decimal/=10;
if(Sign==false)
Decimal*=-1;
intt=1;
if(Decimal<
0)
Decimal=0-Decimal;
Out_Binary[0]='
;
else
Out_Binary[0]='
while(Decimal!
=0)
Binary[i]=Decimal%2;
Decimal=Decimal/2;
while(i--)
Out_Binary[t]=Binary[i]+48;
t++;
Out_Binary[t]='
//if(Sign==false)
//{
//Decimal*=-1;
//}
//printf("
%d"
Decimal);
voidTrueToComplement(char*In_True,char*Out_Complement)
if(In_True[0]=='
i=1;
j=1;
Out_Complement[0]='
while(In_True[i]!
if(In_True[i]=='
Out_Complement[j]='
i++;
j++;
Out_Complement[j]='
Out_Complement[j]=In_True[i];
voidComplementToComplemental(char*In_Complement,char*Out_Complemental)
intNum_1=0;
if(In_Complement[0]=='
while(In_Complement[i]!
Out_Complemental[j]=In_Complement[i];
Out_Complemental[j]='
return;
while(In_Complement[Num]!
Num_1=Num-1;
Out_Complemental[Num]='
while(In_Complement[Num_1]=='
Out_Complemental[Num_1]=In_Complement[Num_1];
Num_1--;
/*if(Num_1==0)
}*/
Out_Complemental[Num_1--]='
while(Num_1>
if(In_Complement[Num_1]=='
Out_Complemental[Num_1]='
Out_Complemental[0]='
voidTrueToFrame(char*In_True,char*Out_Frame)
inti=1;
intj=1;
Out_Frame[0]='
for(i=1;
i<
16;
i++)
Out_Frame[i]=In_True[i];
Out_Frame[i]='
五.实验结果
(1)当输入数是正数时:
(2)当输入数是负数时:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 组成 原理 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)