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
}