簡體   English   中英

C - 二進制和十六進制表示之間的快速轉換

[英]C - Fast conversion between binary and hex representations

讀取或寫入C代碼時,我經常難以將數字從二進制轉換為十六進制表示並返回。 通常,在低級編程中經常使用不同的掩碼,如0xAAAA5555 ,但很難識別它們所代表的特殊位模式。 是否有任何易於記憶的規則如何在腦海中快速完成?

每個十六進制數字映射完全在4位,我通常記住每個位的8421權重,所以很容易做甚至記住轉換即即

A = 10 = 8 + 2 = 1010 ... 5 = 4 + 1 = 0101

記住8-4-2-1的重量。

A        5     
8+4+2+1  8+4+2+1
1 0 1 0  0 1 0 1

我總覺得很容易將HEX映射到BINARY數字。 由於每個十六進制數字可以直接映射到四位二進制數 ,您可以想到:

> 0xA4 

> b 1010 0100
>   ---- ---- (4 binary digits for each part)
>     A    4

通過將基數10表示除以2並以相反順序對余數進行串聯來計算轉換。 我在腦子里這樣做,似乎有效。

所以你說的是0xAAAA5555樣子

我只是弄清楚A看起來像5看起來像是做什么

A = 10

10 / 2 = 5 r 0 
 5 / 2 = 2 r 1
 2 / 2 = 1 r 0
 1 / 2 = 0 r 1

所以我知道A的外觀像1010 (請注意,4個手指是記住剩余部分的好方法!)

您可以將4位的塊串起來,因此AA是1010 1010.要將二進制轉換回十六進制,我總是通過總結2的冪來再次通過基數10.您可以通過形成4位的塊來實現這一點(填充與0s)並將結果串起來。

所以1110111010001 1101 1101 ,它是(1) (1 + 4 + 8) (1 + 4 + 8) = 1 13 13 ,即1DD

暫無
暫無

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

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