力扣习题405:数字转化为十六进制数 (转化8进制,算法类似)
这道题在力扣里面归属于位运算,位运算一般来讲,速度比较快,效率高。在解决本题时,个人作为初学者最先想到的是直接用除法、求余去解决,但是这样比较的麻烦,算法效率不高,进制转换一般可以尝试使用位运算来实现。题目很好理解,算法也不难,在此,本人想写一篇详细解法来为大家提供便利。
首先,使用位运算最好是能对位运算的特性有了解。本题主要使用&运算。&运算最大的特点是同为1才能得1,假如我们用全1于某一个数做运算,结果还是数的本身,且结果的位数为两者位数最小。比如26&15,15有4位,结果为26的低四位;4&15,结果为4。如图所言。也就是说,可以用&运算去截取数字的低位。
那假如说,要截取一些数的高位,或者是中间位怎么办呢??这时,可以用>>,右移符号,数字右移,正数的话补0,负数补1。这时数字通过右移就可以将高位移到低位。当然&#