将整数A转换为B

原创 2016年05月31日 14:48:13

如果要将整数A转换为B,需要改变多少个bit位?【关于二进制还需要进一步学习 参考了别的方法 但理解并不透彻】

样例

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

(31)10=(11111)2

(14)10=(01110)2

class Solution {
    /**
     *@param a, b: Two integer
     *return: An integer
     * 二进制只能表示整数,负数的二进制是补码形式表示,所以如果单纯除2无法直接得到负数的二进制
     * 借由一个flag flag从1开始,每次运算之后左移1位, 也就是10,100,1000,等等
     * 直到1超过32位或64位,flag变成0
     * 我们将a,b 分别于flag进行与(&)运算,与运算定义是,只有运算双方都为1时候,结果才为1. a & flag,
     * 运算结果是a[i]=1时候,结果为1, a[i]=0时候,结果为0。b[i]的运算性质和a[i]一致。
     * 因此通过比较a & flag 和 b & flag, 可以得到对应位数的值是否相同。
     */
    public static int bitSwapRequired(int a, int b) {
        // write your code here
        int change = 0;
        int flag = 1;
        int i=0;
        int j=0;
        while(flag!=0){
            i = a & flag;
            j = b & flag;
            if((i ^ j)!=0)
                change++;
            flag = flag<<1;
        }
        return change;
    }
};

编写函数itob,将整数n转换为以b为底的数(The c programming language 练习3-5)

这是一道将十进制整数转换为b进制(b为整数)的题目。 理论上可以转换任意b进制(1除外),但是由于输入限制(只使用getchar()),只能制定10以内的b,因此如果要尽可能地接近理想情况,需要编写一...

Java实现-将整数A转换为B

如果要将整数A转换为B,需要改变多少个bit位?  注意事项 Both n and m are 32-bit integers. 您在真实的面试中是否遇到过这个题? ...

将十进制整数转换成b进制字符串 (递归和非递归实现)

#include #include using namespace std; //递归实现intToString /* *函数功能:将十进制整数n转换成b进制后,再转化成字符串到s *函数参数:...

【详解】C语言:编写一个函数itob(int n,char s[], int b),将整数n转换为以b进制的数。保存到s中。

#include void itob(int n,char s[], int b) {      int i=1;            for(;i

A、B两个整数集合,设计一个算法求他们的交集,尽可能的高效。

思路1:排序法   对集合A和集合B进行排序(升序,用快排,平均复杂度O(N*logN)),设置两个指针p和q,同时指向集合A和集合B的最小值,不相等的话移动*p和*q中较小值的指针,相等的话同...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:将整数A转换为B
举报原因:
原因补充:

(最多只允许输入30个字)