分类 位运算 下的文章

一、题目列表:
题目1、二进制中1的个数 JZ15
题目2、数值的整数次方 JZ16

  1. & : 按位与操作
    (当其数据类型为十进制整型时,需转化为二进制数据进行计算。)
  2. : 右移操作

  3. 1 是将n的二进制代码右移一个单位(也可理解为n/2)。

二、题目
题目1、二进制中1的个数 JZ15
输入一个整数 n ,输出该数32位二进制表示中1的个数。其中负数用补码表示。

数据范围:- 2^{31} <= n <= 2^{31}-1−2
即范围为:-2147483648<= n <= 2147483647−2147483648<=n<=2147483647
思路:

2.代码

# -*- coding:utf-8 -*-
class Solution:
    def NumberOf1(self, n):
        # write code here
        count = 0
        for i in range(32):
            if n & 1 :
                count +=1
            n= n>>1
        return count

题目2、数值的整数次方 JZ16

实现函数 double Power(double base, int exponent),求base的exponent次方。

注意:
1.保证base和exponent不同时为0。
2.不得使用库函数,同时不需要考虑大数问题
3.有特殊判题,不用考虑小数点后面0的位数。
思路:

2.代码

方法一:直接

# -*- coding:utf-8 -*-
class Solution:
    def Power(self, base, exponent):
        # write code here
        return base**exponent

方法二:

# -*- coding:utf-8 -*-
class Solution:
    def Power(self, base, exponent):
        if exponent < 0:
            base = 1. / base
            exponent = -exponent
        res = 1.
        for i in range(exponent):
            res *= base
        return res