405. Convert a Number to Hexadecimal
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 0s. 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:12345Input:26Output:"1a"
Example 2:12345Input:-1Output:"ffffffff"
题目还是比较简单的,就是要处理负数比较麻烦。
- 这里用
num & 15
代替了num % 16
. 无论num正负,都可以。 num >>> 4
代替了num / 16
.>>>
跟>>
的区别是>>
会按照符号进行补位,如果num是负数,就会补1, 而>>>
不管正负都补0。- 另外,负数是用补码(Two’s complement)表示的。譬如说一个负数为-a, -a和a的二进制之间的关系为
-a = ~a + 1
。
|
|