美文网首页
十进制-二进制秘密

十进制-二进制秘密

作者: chf041 | 来源:发表于2017-11-15 15:15 被阅读0次

    无符号十进制
    1、n&(n-1) 能够去掉二进制n中最右一位1
    2、n%2 或者 n&1 能够判断最后一位是否为1
    3、从右到左遍历整数的位字符串(n = n >> 1)

    相关算法题:

    给定一个整数,编写一个函数来判断它是否是 2 的幂次方

    class Solution(object):
        def isPowerOfTwo(self, n):
            """
            :type n: int
            :rtype: bool
            """
            if n == 0:
                return False 
            return True if n&(n-1) == 0 else False 
                
    

    颠倒给定的 32 位无符号整数的二进制位。

    利用上面的信息

    class Solution:
        # @param n, an integer
        # @return an integer
        def reverseBits(self, n):
            res, power = 0, 31
            while n:
                res += (n & 1) << power
                n = n >> 1
                power -= 1
            return res 
    

    给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

    正负数、越界值

    class Solution(object):
        def reverse(self, x):
            """
            :type x: int
            :rtype: int
            """
            boun = (1 << 31) - 1 if x > 0 else 1 << 31
    
            y, res = abs(x), 0
    
            while y != 0:
                res = res*10 + y%10
                if res > boun:
                    return 0
                y //= 10
            return res if x > 0 else -1 * res 
    

    相关文章

      网友评论

          本文标题:十进制-二进制秘密

          本文链接:https://www.haomeiwen.com/subject/fkthvxtx.html