十六進位和BCD碼的那些事(終結篇)

來源:互聯網
上載者:User
十六進位轉為BCD碼好理解,有問題的是BCD碼轉為十六進位數;

Hex2Bcd:
0x3F的BCD碼是多少。正確答案:99,或者0x63
0x3F=63,再加0x,->0x63, 再把0x63轉為99(0x63=99)
1、如果要表示為十六進位,則轉換為10進位數,前面加0x符號;(十六進位表示)

2、如果要表示為十進位,則先轉換為10進位數,前面加0x符號,再把加上符號的
十六進位數轉為十進位數;(十進位表示)

如果一個數為0x38,則BCD碼為86


Bcd2Hex:(註:)
1、如果這個數是16進位表示的,把0x符號去掉,當成10進位數直接轉換為16進位數即可;
(前提是這個16進位表示的數的任何一位不能大於9,也就是說不能出現A、B、C、D、E、F)
如:0x999,去掉0x,->999,再轉為十六進位數為0x3E7
2、如果這個數是十進位表示的,先把這個數轉換為16進位數,再把0x符號去掉,當成
十進位數,再轉化為十六進位數即可;(註:這個數要在一定範圍內,才行,如999轉換為
十六進位為0x3E7,把0x去掉,3E7不在10進位表示範圍內,)

  上面說的是在一定範圍內的數,對於不在一定範圍內的數怎麼轉。剛開始還真不好理解,
是因為學校教給我們的數學規則限制了我們的思維,對於一個數3E7,當成10進位怎麼理解?
還是按十進位來,個位、十位、百位...,只不過現在十位上的數是14,

BCD碼999轉換為十六進位是多少。正確答案:447,若者0x1BF,為什麼。想不通...
轉換過程:
999轉為十六進位,->0x3E7,
3
3*10+E=44
(3*10+E)*10+7
=447
也就相當於0x3E7當成10進位理解,則是3*100+E*10+7,簡單不。


注:一個十六進位數轉為BCD碼,但這個BCD碼再轉為十六進位數,不等於這個數;
如:如果一個數為0x999,Hex2Bcd(0x999)=0x2547(9543),Bcd2Hex(0x2547)=0x9F3(2547)

  而一個BCD碼的數可以轉為十六進位數,這個十六進位數可以反轉為BCD碼,可能等於這個
數(這個數是十六進位表示,且每一位的數字在0~9之間);也可能不等於這個數;
如:Bcd2Hex(0x999)=0x3E7(999),Hex2Bcd(0x3E7)=2457(0x999)(等於)
   Bcd2Hex(0x9F3)=0x41D(1053),Hex2Bcd(0x41D)=0x1053(4179)
   Bcd2Hex(999)=0x1BF(447),Hex2Bcd(0x1BF)=0x447(1095)(不等於)

   Bcd2Hex(0x447)=0x1BF(447),Hex2Bcd(0x1BF)=0x447(1095)(等於)

結論:16進位轉BCD無法復原,BCD轉16進位有可能可逆。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.