序
无符号十进制
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