从键盘输入一个3位的十进制无符号整数,请分别用二进制、八进制和十六进制形式输出《微型计算机原理及应用 》 编程
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/22 20:54:35
从键盘输入一个3位的十进制无符号整数,请分别用二进制、八进制和十六进制形式输出《微型计算机原理及应用 》 编程
从键盘输入一个3位的十进制无符号整数,请分别用二进制、八进制和十六进制形式输出
《微型计算机原理及应用 》 编程
从键盘输入一个3位的十进制无符号整数,请分别用二进制、八进制和十六进制形式输出《微型计算机原理及应用 》 编程
好久没写过汇编的程序了,代码估计我现在做不出来,能告诉你下原理~
把3位十进制分别读入后,存到内存的是相应符号的ASC2码,将这个符号asc码转成数字的asc码 比如9 存进去的是39H 要变成 1001,也就是9h,比如存入999 就通过10进制的计算可以求出来 转成2进制的asc码 存成一个16位的acs码
要输出2进制的时候每次读最后一位,之后有个循环移位的命令,总共循环12次 将取出来的值变成可以输出的字符asc码 1---->31h 0----->30h 一个个输出出来就可以了
八进制的,从最后一位开始读,每3个二进制存成一个,将他变成对应的十进制,即 001 --->1,011----> 3,110-->6,100---> 4 即4631最后的输出,将每个数字转成相应的可输出二进制,之后挨个输出出来,记得顺序 4输出是第一个,但却是最后算出来的~
16进制的,从最后一位读,每4位存成一个,之后将得到的字符转成可以输出的字符asc码
之后挨个输出,注意顺序就可以了
相应的asc码转换可以参考那本书后面的附录,里面有各个符号对应的asc码,进行简单的计算就能够得到~
希望能对你有点启发,要是1年前问我,估计很快就能做出来了,就是很久不用了,一直用C++来着,真是对不住啊~
#include
#include
void MchangeN(int n,int x)
{
int i=0,j,a[20],k,c=0;
double m;
m=x;
k=(int)m;//强制类型转换,可以使用k=(int)m;代替,从而更加的一目了然
while(k)//判定需要转换的...
全部展开
#include
#include
void MchangeN(int n,int x)
{
int i=0,j,a[20],k,c=0;
double m;
m=x;
k=(int)m;//强制类型转换,可以使用k=(int)m;代替,从而更加的一目了然
while(k)//判定需要转换的数是否变为0
{
a[i++]=k%n;//取余,进行进制转换,但是顺序与正确值相反
k/=n;//转换一位之后进行相应的变化
}
printf("转换结果为:");
if(x<0)
printf("-");
for(j=i-1;j>=0;j--)//反序输出,大于10的数字进行相应的变化
{
if(a[j]==10)
printf("A");
else
if(a[j]==11)
printf("B");
else
if(a[j]==12)
printf("C");
else
if(a[j]==13)
printf("D");
else
if(a[j]==14)
printf("E");
else
if(a[j]==15)
printf("F");
else
printf("%d",a[j]);
}
printf("\n");//输出换行,以使程序的输出结果美观
}
void main()
{
int x;
printf("请输入需要转换的3位整数:");
scanf("%d",&x);
printf("2进制输出:");
MchangeN(2,x);
printf("8进制输出:");
MchangeN(8,x);
printf("16进制输出:");
MchangeN(16,x);
}
收起