image.png

    1. class Solution {
    2. public:
    3. string toHex(int num) {
    4. if(num == 0) return "0";
    5. string str = "0123456789abcdef";
    6. unsigned num2 = num;
    7. string ans = "";
    8. while(num2){
    9. ans = str[num2 & 15] + ans;
    10. num2 >>=4;
    11. }
    12. return ans;
    13. }
    14. };

    核心思想转换成unsigned之后进行移位操作,可以使得移位补项0,所以可以使用num2是否为0作为循环条件;
    同时这个想法可以用在判断1的个数上,二进制是/2—(>>1),十进制是/10