1. 程式人生 > >負數十六進位制快速計算方法

負數十六進位制快速計算方法

負數十六進位制快速計算方法

起因:找工作時筆試過程中經常遇到十進位制轉十六進位制的題目,
而且會時不時遇到負數轉十六進位制的題目,題目考察的是應聘
者對進位制轉換的掌握程度。

傳統思路:1.先將十進位制轉二進位制再取反得反碼後加1得到補碼
2.將二進位制4位一組劃分轉成對應十六進位制

突發奇想轉換思路:假設我們要轉換的是32位平臺下的int型別
(4位元組32位)的-13,那我們可以快速寫出-1的十六進位制為:
FFFFFFFF(有符號型別的資料-1就是其類型範圍的最大值,8位
char型別的-1為FF,這個比較好記,都是F,4位一個F,8位兩個F
依此類推),那麼32位-13 = -1 - 12,則-13的補碼就是-1的補
碼減去12,則32位的-13補碼十六進位制即為:
FFFFFFFF - 12 = FFFFFFF3

擴充套件:同樣我們可以擴充套件一下,例如C中我們可以將-1強轉為無
符號數除以2就可以得到有符號數正數的範圍的上限(雖然沒用,
但是可以提供一種巧用的思路)

原創文章,裝載請附上原連結。