[英]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)並將結果串起來。
所以111011101
是0001 1101 1101
,它是(1) (1 + 4 + 8) (1 + 4 + 8) = 1 13 13
,即1DD
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.