A. 如何用c语言实现bcd码转十六进制数比如BCD码5(0101),怎么转成0x05
#include<stdio.h>
#include<string.h>
int main()
{
char a[20],b[5];
int i,result = 0,k = 1,j = 0;
printf("输入一个二进制数:\n");
gets(a);
for(i = strlen(a)-1;i >= 0;i --)
{
if(a[i] == '1') result += 1 << (k-1); //如果是1,用1*位权
if(k == 4 || i == 0) //每四位计算一次结果(result)。
//如果到了最高位(i==0)不足四位(比如100 0000),也计算
{
switch(result)
{
case 10: b[j++]='A';break; //大于等于十转化成字母
case 11: b[j++]='B';break;
case 12: b[j++]='C';break;
case 13: b[j++]='D';break;
case 14: b[j++]='E';break;
case 15: b[j++]='F';break;
default: b[j++]=result + '0';break;
}
result = 0; //结果清零
k = 0; //表示位权的K清零
}
k ++; // 初始位权为1
}
b[j] = '\0';
printf("结果是:\n");
for(i = strlen(b)-1;i >= 0;i --)
printf("%c",b[i]);
printf("\n");
return 0;
}
B. 用C语言编写一个将8位二进制数转化成BCD码的程序
#define uchar unsigned char
uchar 8_bit;
uchar ge,shi,;
=8_bit/100;
shi=8_bit%100/10;
ge =8_bit%10;
C. c语言bcd码相加
特别看中速度的话可以做个256×256的表格,查表计算
D. 编写程序:实现两个8421BCD码加法程序
1、压缩BCD码(一个字节存两位8421BCD码对应的十进制数)加法程序:
MOV AL,12H
MOV BL,34H
ADD AL,BL
DAA
2、非压缩BCD码(一个字节存一位8421BCD码对应的十进制数)加法程序:
MOV AL,02H
MOV BL,04H
ADD AL,BL
AAA
E. BCD码分离程序怎样用C语言来写
给你一个可以转换任意长度的
int org=1212123; /*这个数是要转换的正整数,可以任意长度*/
int bcd[255]; /*用于存放bcd码,默认255个位数*/
int i=0,j=0;
do{
bcd[i]=org%10;
i++;
org=org/10;
}while(org)
for(j=i-1;j>=0;j--)
{
printf("%-5d,",bcd[j]);
}
F. 51单片机,输入是BCD码,如何实现BCD码数据的加法运算
输入BCD码,是怎么输入的,要直接实现BCD码加法计算,用汇编语言写程序就很简单,用ADD指令,然后用DA A指令调整。用C语言写程序也可以,关键是看BCD码的输入方式是什么。
G. 用c语言十六进制 bcd码
BCD难道还有什么位数限制?
一般是把16进制先转换成10进制,由10进制数决定BCD的位数。
H. c语言 计算机 bcd码
(101001)BCD=29,
这是因为BCD编码是每4位二进制对应一位十进制数字,即10-->2,1001-->9
I. 编程计算1+2+3+4+5+6+7+8+9+10BCD码加法
二进制编码的十进制数,简称BCD码(Binarycoded Decimal). 这种方法是用4位二进制码的组合代表十进制数的0,1,2,3,4,5,6 ,7,8,9 十个数符。4位二进制数码有16种组合,原则上可任选其中的10种作为代码,分别代表十进制中的0,1,2,3,4,5,6,7,8,9 这十个数符。最常用的BCD码称为8421BCD码,8.4.2.1 分别是4位二进数的位取值。 点击此处将给出十进制数和8421BCD编码的对应关系表。
1、BCD码与十进制数的转换
BCD码与十进制数的转换.关系直观,相互转换也很简单,将十进制数75.4转换为BCD码如:
75.4=(0111 (0101.0100)BCD 若将BCD码1000 0101.0101转换为十进制数如: (1000 0101.0101)BCD=85.5
注意:同一个8位二进制代码表示的数,当认为它表示的是二进制数和认为它表示的是二进制编码的十进制数时,数值是不相同的。
例如:00011000,当把它视为二进制数时,其值为24;但作为2位BCD码时, 其值为18。
又例如00011100,如将其视为二进制数,其值为28,但不能当成BCD码,因为在8421BCD码中,它是个非法编码 .
2、BCD码的格式
计算机中的BCD码,经常使用的有两种格式,即分离BCD码,组合BCD码。
所谓分离BCD码,即用一个字节的低四位编码表示十进制数的一位,例如数82的存放格式为:
_ _ _1 0 0 0 _ _ _ _0 0 1 0 其中_表示无关值。
组合BCD码,是将两位十进制数,存放在一个字节中,例82的存放格式是1000 0010
3、BCD码的加减运算
由于编码是将每个十进制数用一组4位二进制数来表示,因此,若将这种BCD码直接交计算机去运算,由于
计算机总是把数当作二进制数来运算,所以结果可能会出错。例:用BCD码求38+49。
解决的办法是对二进制加法运算的结果采用"加6修正,这种修正称为BCD调整。即将二进制加法运算的结果修正为BCD码加法运算的结果,两个两位BCD数相加时,对二进制加法运算结果采用修正规则进行修正。修正规则:
(1)如果任何两个对应位BCD数相加的结果向高一位无进位,若得到的结果小于或等于9,则该不需修正;若得到的结果大于9且小于16时,该位进行加6修正。
(2)如果任何两个对应位BCD数相加的结果向高一位有进位时(即结果大于或等于16),该位进行加6修正.
(3)低位修正结果使高位大于9时,高位进行加6修正。
下面通过例题验证上述规则的正确性。
用BCD码求35+21 BCD码求25+37 用BCD码求38+49 用BCD码求42+95
用BCD码求91+83 用BCD码求94+7 用BCD码求76+45
两个组合BCD码进行减法运算时,当低位向高位有借位时,由于"借一作十六"与"借一作十"的差别,将比正确的结果多6,所以有借位时,可采用"减6修正法"来修正.两个BCD码进行加减时,先按二进制加减指令进行运算,再对结果用BCD调整指令进行调整,就可得到正确的十进制运算结果。 实际上,计算机中既有组合BCD数的调整指令,也有分离BCD数的调整指令。另外,BCD码的加减运算,也可以在运算前由程序先变换成二进制数,然后由计算机对二进制数运算处理,运算以后再将二进制数结果由程序转换为BCD码
这是我抄过来的 希望能帮到你