首页 > 其他 > 详细

将整数A转换为B

时间:2016-06-12 03:15:52      阅读:133      评论:0      收藏:0      [点我收藏+]

题目描述:如果要将整数A转换为B,需要改变多少个bit位?

样例:如把31转换为14,需要改变2个bit位。

(31)10=(11111)2

(14)10=(01110)2


之前,我说过位运算的一些基本操作(详见:点击打开链接),此处其实求的是两个二进制中不同的位的个数。所以,可以采用两种方法。

1. 直接求出两个数的二进制表示,然后比较两个01字符串的不同的位的个数

2. 先对两个数异或,这样,求出的二进制数中1的个数就是两个数的不同位的个数

我这里只给出第二种方法的代码。

因为之前已经知道怎么求出一个二进制数中1的个数的方法(详见:点击打开链接),所以,此处讲解忽略。还是注意python中对负数二进制的处理就行。代码如下:

class Solution:
    """
    @param a, b: Two integer
    return: An integer
    """
    def bitSwapRequired(self, a, b):
        a ^= b
        if a > 0:
            return self.helper(a)
        else:
            temp = abs(a - 1)
            return 32 - self.helper(temp)

    # helper()统计正数的二进制中1的个数
    def helper(self, n):
        count = 0
        while n != 0:
            n = n & (n - 1)
            count += 1
        return count
        # write your code here


先对两个数异或,再求解异或之后的二进制值中1的个数。

将整数A转换为B

原文:http://blog.csdn.net/guoziqing506/article/details/51601472

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!