从键盘输入一个3位的十进制无符号整数,请分别用二进制、八进制和十六进制形式输出

《微型计算机原理及应用》编程... 《微型计算机原理及应用 》 编程 展开
losicy
2011-01-13 · TA获得超过439个赞
知道小有建树答主
回答量:224
采纳率:0%
帮助的人:228万
展开全部
好久没写过汇编的程序了,代码估计我现在做不出来,能告诉你下原理~~~
把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++来着,真是对不住啊~~~
来自:求助得到的回答
百度网友10a9009
2010-12-30 · 超过13用户采纳过TA的回答
知道答主
回答量:38
采纳率:0%
帮助的人:0
展开全部
#include<stdio.h>
#include<math.h>
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);
}

参考资料: http://zhidao.baidu.com/question/87210644.html

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式