哪個大佬知道十六進位轉二進位?
不是十六轉十再轉二的那種
為什麼要十六進位轉十進位再轉二進位,因為十進位乘除法有口訣。
所以正如上一位回答者所說,直接建一個對照表是最簡單的實現。當然,你想先建一套16進位乘法口訣表,然後把它算出來,也不是不行。
十六是二的冪,所以十六進位不需要轉成十進位,可以直接轉成二進位。
十六進位的0-F,分別和二進位的0000-1111一一對應。
對於任何一個十六進位的數,只要把每一位數分別轉成二進位(一定是四位)。
然後直接拼接起來就行。
甚至比十轉二還簡單。
PS:因為十六的特殊性,所以可以每一位轉換後再拼接,不是所以進位都可以這麼做!
我做了一個視頻教程, 一把解決了 bit,byte,二進位,十六進位的問題。可以參考。
西部克:乾貨區塊鏈 視頻學習系列 什麼是bit,byte,二進位,十六進位是啥??zhuanlan.zhihu.com.586
.model stdcallHEX2BIN proto dwNum:dword,ptr pBuf:BYTE.data
num dword 0123CDEFh;//待轉換的16進位數 無符號整形變數buf 200h dup 0;//存儲轉換後二進位ASCII碼的緩衝區....codemain proc argv:dword,argc:dwordstart:invoke HEX2BIN,num,addr buf;//沒有約定邊界有溢出危險,為了代碼簡潔此處略過不談ret
main endp...HEX2BIN proc uses edi eax ecx edx,dwNum:dword,ptr szBin:BYTEmov edi,szBinmov edx,dwNummov ecx,32cldclc
again:rol edx,1jc onemov al,0stosbjmp nextone:mov al,1stosbnext:
loop againmov al,0stosbretHEX2BIN endp...end
一位十六進位數對應四位二進位數
那你會二進位轉十六進位嗎,就是反過來,把十六進位的每一位都轉化為四位的二進位,再合併起來就是了。
二進位跟八進位,十六進位轉化超簡單的。一位八進位相當於三位二進位,一位十六進位相當於四位二進位,直接轉化就可以了
例子:
八進位 37=011111 (3是011 7是111,所以八進位的37 轉化為二進位就是 011111)
十六進位 A5 = 10100101(A是1010, 5是0101)
8421
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
a 1010
b 1011
c 1100
d 1101
e 1110
f 1111
每一位16進位代表四位二進位。
ffh == 1111_1111d
3eh == 0011_1110d
fffh == 1111_1111_1111d
好把就是這樣。
(我是真的閑啊!)
先建表,把0到F共十六個數的4位二進制列出來。
然後直接查表,比如16AB就是[1][6][A][B],0001 0110 1010 1011
就是把16進位裡面每一個數字分別轉換成二進位就好了,每個二進位數是四位
十六進位 二進位
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
A 1010
B 1011
C 1100
D 1101
E 1110
F 1111
手機碼字,合適不好請見諒
推薦閱讀: