内存中用组合BCD码表示的十进制数,把它转换成ASCII码的c语言程序

 我来答
xoaxa
2014-09-24 · TA获得超过8612个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3509万
展开全部

一个ASCII码最多需要四个BCD码存储,也就是两个字节。比如‘A',ASCII码值是65,用BCD表示是0000,0000,0110,0101,’1‘的ASCII码值是49,用BCD表示是0000,0000,0100,1001。现在的问题是这些BCD码是如何提供的?这里假定,用整数值表示BCD码,如'e'的ASCII码值(101)10,用整数表示的BCD是0000,0001,0000,0001,也就是257。

#include <stdio.h>
const int MAXLEN = 128;

int main() {
char asciis[MAXLEN];
short bcds[] = {101,277,104,130,72,73,66};// AsDR12*
int i,j,t,p,m,k = 0,n = sizeof(bcds)/sizeof(bcds[0]);
for(i = 0; i < n; ++i) {
t = bcds[i];
m = 0;
for(j = 0; j < 4; ++j) {
p = (t & 0XF000) >> 12;
m = 10 * m + p;
t <<= 4;
}
asciis[k++] = m;
}
asciis[k] = '\0';
printf("%s\n",asciis);
return 0;
}
chinaboyzyq
2016-02-05 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:3309万
展开全部

1、内存中的组合BCD码,常以十六进制串形式存在,并且此形式的十六进制串从表面上看与十进制数表现形式一致,比如BCD码:0001 0000(2)=10(16)=10(10)(注意这里是BCD码,真正的16进制10并不等于10进制10),那么,只要把BCD码的16进制串转换成10进制数值,就得到相应的10进制数,就可以得到相应的ascii码。

2、c语言代码示例:

#include <stdio.h>

int main(int argc, char *argv[])
{
char n[]="101";//16进制BCD码
int ascm=0,i=0;
while(n[i])
{
ascm=ascm*10+(n[i]-'0');//10进制ascii码
i++;
}
printf("ascii:%d\nchar:%c\n",ascm,ascm);

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱夜009
2014-09-24 · TA获得超过192个赞
知道小有建树答主
回答量:309
采纳率:0%
帮助的人:211万
展开全部

bcd 码是怎么存的  是一个字节存两个BCD还是?

// 一个 val 保存2个BCD
#define BCD_TA_BIN (val) ((val)&15+((val)>>4)*10)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chr1999
2014-09-24 · TA获得超过1056个赞
知道小有建树答主
回答量:2462
采纳率:0%
帮助的人:1249万
展开全部
a[i] = a[i] + '0'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

2022-08-19 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:8319万
展开全部


题目中的“组合 BCD 码、高地址。。。”,都不是 C 语言所能操作的。

这种题目,应该用汇编语言来编程。

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

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式