簡體   English   中英

BCD計算器問題

[英]BCD Calculator issue

我正在將十六進制0xE0轉換為BCD。 當我這樣做時,我得到的是64。我知道這是完全錯誤的,也許這是我的C ++代碼中的問題,但是64聽起來不正確。 有任何想法嗎? 0xE0是特例嗎? 0xE0為十進制224。)

這是我的代碼的一部分:

unsigned char Hex2BCD(unsigned char param)
{   unsigned char lo;
    unsigned char hi;
    unsigned char val;
    unsigned char buf[10];

hi = param/ 10;
lo = param- (hi * 10);

val= (hi << 4) + lo;
return val;
}

我的想法是,您轉換為BCD的代碼存在錯誤。 它沒有執行預期的操作,因此您所觀察到的結果是錯誤的。

除了這個笑話:如果存儲在帶符號的char中,則為0xe0為負數。 如果您在計算結果時不特別注意所使用的臨時變量的符號,那么這可能會給您帶來麻煩。

編輯:現在,您已經發布了一些代碼,很顯然,盡管您將第一個數字的正確值計算為lo ,但是還需要執行另一步驟才能將正確的值獲取為hi

使用0xe0作為輸入,您實際上是在計算(22<<4) + 4 = 356 = 0x164而不是(2<<8)+(2<<4)+4 = 548 = 0x224

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM