二进制中1的个数
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
class Solution:
def NumberOf1(self, n):
# write code here
if n<0:
#得到补码形式
n=n&0xffffffff
if n>=0:
count=0
while n!=0:
count+=1
n=n&(n-1)
return count
- 注意 在python中,整型以补码的形式表示,需要
n=n&0xffffffff
来转化为补码形式 - n=n&(n-1)来消除二进制表示中最右边的1,循环直至0
数值的整数次方
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0
class Solution:
def Power(self, base, exponent):
result = 1
if base == 0:
return 0
if exponent == 0:
return 1
e=abs(exponent)
res=1
tmp=base
while e >0:
#for _ in range(e):
if e & 1 == 1:
res=res*tmp
e=e>>1
tmp=tmp*tmp
return res if exponent>0 else 1/res
- 快速幂算法
- 通过
>>1
来判断最后一位是否为1.即是否累乘