十进制-二进制秘密

2017-11-15  本文已影响0人  chf041

无符号十进制
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 
上一篇下一篇

猜你喜欢

热点阅读