哪個大佬知道十六進位轉二進位?

不是十六轉十再轉二的那種


為什麼要十六進位轉十進位再轉二進位,因為十進位乘除法有口訣。

所以正如上一位回答者所說,直接建一個對照表是最簡單的實現。當然,你想先建一套16進位乘法口訣表,然後把它算出來,也不是不行。


十六是二的冪,所以十六進位不需要轉成十進位,可以直接轉成二進位。

十六進位的0-F,分別和二進位的0000-1111一一對應。

對於任何一個十六進位的數,只要把每一位數分別轉成二進位(一定是四位)。

然後直接拼接起來就行。

甚至比十轉二還簡單。

PS:因為十六的特殊性,所以可以每一位轉換後再拼接,不是所以進位都可以這麼做!


我做了一個視頻教程, 一把解決了 bit,byte,二進位,十六進位的問題。可以參考。

西部克:乾貨區塊鏈 視頻學習系列 什麼是bit,byte,二進位,十六進位是啥??

zhuanlan.zhihu.com圖標


.586

.model stdcall

HEX2BIN proto dwNum:dword,ptr pBuf:BYTE

.data

num dword 0123CDEFh;//待轉換的16進位數 無符號整形變數

buf 200h dup 0;//存儲轉換後二進位ASCII碼的緩衝區

.

.

.

.code

main proc argv:dword,argc:dword

start:

invoke HEX2BIN,num,addr buf;//沒有約定邊界有溢出危險,為了代碼簡潔此處略過不談

ret

main endp

.

.

.

HEX2BIN proc uses edi eax ecx edx,dwNum:dword,ptr szBin:BYTE

mov edi,szBin

mov edx,dwNum

mov ecx,32

cld

clc

again:

rol edx,1

jc one

mov al,0

stosb

jmp next

one:

mov al,1

stosb

next:

loop again

mov al,0

stosb

ret

HEX2BIN 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

手機碼字,合適不好請見諒


推薦閱讀:

TAG:計算機科學 | 二進位 | 進位 |