A. 51单片机实现二进制转换成十进制的程序
DA转换,如果是八位精度就是一个字节咯。
假使存于30h。
mov a,30h
mov b,#100
div ab
mov 31h,a
mov a,b
mov b,#10
div ab
mov 32h,a
mov 33h,b
ret
这样,十进制的百十个位分别存在31h,32h,33h中
B. 单片机,进制转换问题
十六进制459C4000转成二进制是0100 0101 1001 1100 0100 0000 0000 0000最高位为符号位,0表示整数,1表示负数,因此这个是一个正数。然后往后数8个位,这8个位叫阶码,就是1 1011 110=十进制的139。139-127(这个127是固定的)=12。将阶码换成1.,然后就是1.001 1100 0100 0000 0000 0000。根据刚才的到的12,就是小数点右移12位,就是1001 1100 0100 0.000 0000 0000。小数点前面是整数部分,1001 1100 0100 0转十进制就是5000,然后小数部分为000 0000 0000转成十进制就是0。因此最终结果是5000了。
十六进制4616000转成二进制是0100 0110 0001 0110 0000 0000 0000 0000最高位为符号位,0表示整数,1表示负数,因此这个也是一个正数。然后往后数8个位,这8个位叫阶码,就是100 0110 0=十进制的140。140-127=13。将阶码换成1.,然后就是1.001 0110 0000 0000 0000 0000。根据刚才的到的13,就是小数点右移13位,就是1001 0110 0000 00.00 0000 0000。小数点前面是整数部分,1001 0110 0000 00转十进制就是9600,然后小数部分为00 0000 0000转成十进制就是0。因此最终结果是9600了。
这个就是计算器中浮点数的存储、转换的方式。
望采纳。。。。。。
C. 单片机的进制的换算
用在单片机上的一般就是16进制和2进制,这两者之间的换算非常简单,看下面两个例子:
234H转为2进制:
2 == 0010
3 == 0011
4 == 0100
234H = 0010 0011 0100 B
1101000101001B转为16进制:
从低位开始四位四位的划,到最高位则左边补0,如上数:
1101000101001B = 0001 1010 0010 1001 B
然后直接转为16进制即可:
0001 1010 0010 1001 B == 1A29H
D. 单片机C语言 十六进制转换为十进制
8位的十六进制数temp(0~255)
百位 =temp/100;
temp=temp%100;//取余数
shi=temp/10;
ge=temp%10;
16位的也是一样,只是先除以10000
E. 单片机 da a 怎么进行进制转换的
DA A是十进制调整指令,使十六进制加法相加后得到十进制的效果。
转换规则是:当两个BCD码相加,如果和等于或小于 1001(即十进制数 9),不需要修正;如果相加之和在 1010 到1111(即十六进制数 0AH~0FH)之间,则需加 6 进行修正;如果相加时,本位产生了进位,也需加 6 进行修正。
F. 单片机十六进制如何转成二进制数
单片机十六进制和二进制数,不用转换,计算机内的数据都是以二进制保存的。几进制数,只是以不同的方式来显示。本质上是一样的。
如果一定要转换,具体参考如下:
unsigned char num; //定义一个8位数
if(num&(1<<n))
...;//num 的第N位是1
else
...;//num 的第N位是0
当然可以放在一个循环里面;
for(unsigned char i=0;i<8;i++) {
if(num&(1<<n))
...;//num 的第N位是1
else
...;//num 的第N位是0
}