Given an integer, write an algorithm to convert it to hexadecimal. For negative integer, two’s complement method is used.
Note:
- All letters in hexadecimal (
a-f
) must be in lowercase. - The hexadecimal string must not contain extra leading
0
s. If the number is zero, it is represented by a single zero character'0'
; otherwise, the first character in the hexadecimal string will not be the zero character. - The given number is guaranteed to fit within the range of a 32-bit signed integer.
- You must not use any method provided by the library which converts/formats the number to hex directly.
Example 1:
Input: 26 Output: "1a"
Example 2:
Input: -1 Output: "ffffffff"
two's complement
可以用bit 操作
对于-1, bit位就是全都是1
我们每次,计算最右边的四位,然后向右移动四位
因此存在负数,因此计算的时候为了知道右边四位的bit情况用 num&15
java 里边 >>, <<是数字shift,>>>是逻辑shfit。没有<<<(因为<<<和<<一样)
>>时候最高位不变
Right arithmetic shift >>Left arithmetic shift <<
Right logical shift >>>
public String toHex(int num) {
if(num == 0) return "0";
char[] map = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
String ans = "";
while(num != 0){
ans = map[(num & 15)]+ans;
num >>>= 4;
}
return ans;
}
没有评论:
发表评论