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

2021-08-31 20:57:09 字數 558 閱讀 7844

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

起因:找工作時筆試過程中經常遇到十進位制轉十六進製制的題目,

而且會時不時遇到負數轉十六進製制的題目,題目考察的是應聘

者對進製轉換的掌握程度。

傳統思路: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就可以得到有符號數正數的範圍的上限(雖然沒用,

但是可以提供一種巧用的思路)

十六進製制計算問題

system.out.println long.tohexstring 0x100000000l 0xcafebabe 先看看以上 感覺答案應該是 1cafebabe。但是答案卻是 cafebabe。為什麼呢,怎麼感覺像是int型變數的相加,第32位的1被捨棄了。看看以下 就明白了 int hex ...

Matlab 十進位制負數轉換十六進製制,簡單實用

需要對乙個數字矩陣進行乙個資料的歸一化,把十進位制數最終轉化成3個位元的十六進製制,也就是24位的數。直接用 函式 dec2hex 因為有負數和小數的存在,需要額外的處理,小數還比較好解決,根據設計,直接四捨五入取整就好,不需要保留小數。對於負數轉十六進製制,matlab沒有相關的函式可以直接轉換。...

十進位制數轉換為八進位制數 十六進製制數

十進位制轉換為其他進製有乙個基本公式 n n div d d n mod d 其中 div 是整除,mod 為求餘,n 是十進位制數,d 是要目標 進製 例如 1348 10 2504 8,運算過程如下 nn div 8 n mod 8 1348 1684 16821021 2520 2 餘數的逆序...