当前位置:首页 » 编程语言 » c语言bcd码转十进制
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言bcd码转十进制

发布时间: 2022-07-09 16:10:39

① 8421bcd码转换十进制是什么

8421bcd码转换十进制138550221。

8421BCD是采用十六进制码来表示十进制数值,高位到低位的权值分别为8,4,2,1,b,c,d只要将每个十六进制码对应的权值相加即得到对应的十进制数。十六进制的8421BCD码转换成十进制是:97。

注意:

现在人们日常生活中所不可或离的十进位值制,就是中国的一大发明。至迟在商代时,中国已采用了十进位值制。从现已发现的商代陶文和甲骨文中,可以看到当时已能够用一、二、三、四、五、六、七、八、九、十、百、千、万等十三个数字,记十万以内的任何自然数。

这些记数文字的形状,在后世虽有所变化而成为现在的写法,但记数方法却从没有中断,一直被沿袭,并日趋完善。十进位值制的记数法是古代世界中最先进、科学的记数法,对世界科学和文化的发展有着不可估量的作用。正如李约瑟所说的:“如果没有这种十进位制,就不可能出现我们现在这个统一化的世界了。”

c语言如何把二进制数转化为十进制数

//*********************************************
//不使用求余和除法的二进制转bcd的算法
//使用了C51中 指令DA的思路
//本人原创 已测试 以应用实际项目中
//Lhex_to_bcd
//*********************************************
//**************************
// 数据自加 并作10进制检查
//
//**************************
void C51_DA(unsigned char *da1,unsigned char Ln,unsigned char ac0)
{
unsigned char i;
unsigned char ac = ac0;//进位标志

for(i=0;i<Ln;i++)
{
da1[i] = da1[i] + da1[i] + ac;

if(da1[i] > 9)
{
da1[i] = da1[i] - 10;
ac = 1;
}
else
{
ac= 0;
}
}
}

//**************************************
// 多字节整形转 bcd
// 结果保存为非压缩bcd码
// 输入数据
// da1 用来保存转换结果
// 长度大于 (l+1)*2
// da2 被转换数据
// l da2 长度 用字节个数表示
// 输出 无
//**************************************
void Lhex_to_bcd(unsigned char *da1,unsigned char *da2,unsigned char l)
{
unsigned char i;
unsigned char m;
unsigned char tmp;
unsigned char Ln = (l+1)*2; //计算结果的长度

for(i=0;i<Ln;i++) //初始化计算结果
da1[i] = 0;

for(m=0;m<l;m++) //循环输入数据的字节数
{
tmp = da2[l-1-m];

for(i=0;i<8;i++)//每个字节循环8次
{
if(tmp&0x80) //取最高 1 bit
C51_DA(da1,Ln,1);
else
C51_DA(da1,Ln,0);
tmp<<=1;
}
}
}

③ c语言程序 自定义函数实现:二进制转换为十进制。

先定符号负数先弄个负号,然后可以用Ascii码或BCD码表示十进制,ASCII码除以10用余数转成字符完成后加结束符,然后翻转字符串!BCD每字节两位10进数,方法一样。正常计算机内所有数据,都以二进制表系,如果是字符串二进制,先转成计算机内的二进制表示,再转10进制好了!

④ BCD码的转换为十进制

(00110111.0101) 8421BCD =(0011 0111 . 0101) 8421BCD =(37.5)10

⑤ bcd码转换成10进制数,汇编语言简单的

DATA
SEGMENT
BCD
DB
10010110b
;待转换的BCD码
NUMBER
DB
0
;转换后得到的十进制
DATA
ENDS
CODE
SEGMENT
ASSUME
CS:CODE,DS:DATA,SS:STACK
MOV
AX,DATA
MOV
DS,AX
MOV
DX,BCD
;将BCD码移入DX中
MOV
BL,10
MOV
AL,DH
MUL
BL
;将BCD码中的高四位乘以10,得到的值放入AX中
AND
DX,0FH
;去掉BCD码中的高四位,只保留低四位,用于下一步相加
ADD
AX,DX
;将DX中的低四位与AX中的值相加即得结果
MOV
NUMBER,AX
;将结果存入10进制的NUMBER变量中即得到十进制结果
MOV
AH,4CH
INT
21H
CODE
ENDS

⑥ c语言bcd码转十进制

不知道我的理解对不对,这个问题,就是把一个整数还原成16进制数的表示方式,而这个十六进制数实际上表示的就是十进制数,所以我们只要把输入的数转换成十六进制表示就行了,但是有一个问题,其实需要注意的就是输入的时候10-15
其实是不能输入了,因为刚好就是A-F,所以不妨让输入值>=16
<=15
对于这个范围的数
其实只要两步就行了,第一,除以16取余数,对应的是各位上的数,除以16取整数商,对应的就是十位数,应该这样就可以
void
main(){
int
a;
cin>>a;
if(a<16||a>153)cout<<"不符合输入规则"<<endl;
else{
int
c=a%16;
int
b=a/16;
int
abc=
b*10+c;
cout<<abc<<endl;
}
}

⑦ 在C51编程中怎么把BCD码转换为十进制和二进制。。。。。

51中,二进制实际上是以十六进制表示,转换成16进制即可满足要求

例如BCD格式的十进制56: 为0x56
其十进制为56,方法如下:a为原数 b为转换后的十进制数 c为转换后的16进制
a=0x56;
temp1=a/16;
temp2=a%16;
b=temp1*10+temp2;

temp1=b/16;
temp2=b%16;
c=temp1*10+temp2;

结果:a=0x56 b=56 c=0x38

⑧ BCD码怎样才能转换成十进制数

设转换后的BCD码存放的目标首地址为内部RAM中xxH,低位数存在低地址
设显示器最低地址为XXXXH
PUSH ACC
PUSH DPTR
PSUH R0
MOV R0,#XXH
MOV DPTR,#1320H
MOV A,#00H
MOVC A,@A+DPTR
PUSH ACC
ANL A,#0FH
ADD A,#30H
MOV @R0,A
ANL A,#0FH
ADD A,#30H
POP ACC
SWAP A
ANL A,#0FH
ANL A,#0FH
ADD A,#30H
MOV @R0,A
POP R0
POP DPTR
POP ACC
RET