① 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