我正在解決一個問題,因爲破解編碼採訪需要我用一個儘可能少的指令來交換整數中的奇數和偶數位(例如位0和1是交換,位2和3交換等)Bitmasking - 何時使用十六進制與二進制
作者的解決方案圍繞使用掩碼來抓取一個數字中的奇數位,並在另一個數字中抓取偶數位,然後將它們移出1
我得到她的解決方案,但我不明白她是如何抓住偶數/奇數位的。她創建了兩個位掩碼 - 雙十六進制 - 爲一個32位整數。這兩個是:0xaaaaaaaa和0x55555555。我知道她本質上是創造了相當於1010101010 ...對於一個十六進制的32位整數,然後將它與原始數字進行與運算,以分別獲取偶數/奇數位。
我不明白爲什麼她使用十六進制?爲什麼不只是代碼10101010101010101010101010101010?她是否使用十六進制來減少冗長?你應該什麼時候使用一個呢?
所以你可以在任何基地使用面具沒有問題? – Sunny
是的;無論使用什麼基數,它都是相同的*值*。他們寫作「二十億八千六百三十一萬一千五百三十」的方式都不一樣。二進制和十六進制只是使它更明顯*爲什麼*這個特定的值正在被使用。 – chepner