Java中的十进制到二进制函数

时间:2014-09-29 20:58:17

标签: java algorithm

我按照以下解释编写了一个将int号转换为int numberbinary的函数: 假设我们希望将十进制57转换为二进制。我们从写作位置开始 从右到左列的值,直到我们到达位置值更大的列 比十进制数。我们不需要该列,因此我们将其丢弃。因此,我们首先 写:

位置值:64 32 16 8 4 2 1

然后我们丢弃位置值为64的列,留下:

位置值:32 16 8 4 2 1

接下来,我们从最左边的列到右边。我们将32分为57和 观察到57中有一个32,余数为25,所以我们在32列中写1。 我们将16除以25并观察到25中有一个16,余数为9并写入 16列中的1。我们将8分为9并观察到9中有8个有a 接下来的两列当它们的位置时每个都产生0的商 值分为1,因此我们在4和2列中写入0。最后,1比1是1,所以 我们在1栏中写了1。这会产生:

位置值:32 16 8 4 2 1 符号值:1 1 1 0 0 1

我写了这个函数试图跟随解释的脚步。当dec = 10且c2 = 4时,不应继续while循环,因为10< = 4为假,但条件为真。有人能解释一下这里发生了什么吗?

public static int decimaltobinary(int dec){}{
    int bin = 0,it;
    int c1,c2;
    while(dec>0){
        it = 1;
        do{
            c2 = (int)Math.pow(2, it +1);
            c1 = (int)Math.pow(2, it);
        }while(dec <= c2 && dec < c1);
        bin += Math.pow(10, it - 1);
        dec = dec % c1;
    }
    return bin;
}

1 个答案:

答案 0 :(得分:2)

如果您不需要自己的算法,则可以更轻松地完成此任务:

public int toBinary(int decimal) {
    String binaryString = Integer.toBinaryString(decimal);
    return Integer.parseInt(binaryString);
}

如果你想制作自己的算法,比特抨击会更容易。对于整数的二进制表示,int似乎是一个不好的容器,因为你只能保存9位。

public int toBinaryBitBashing(int decimal) {
    int bitCount = 6;
    int bit = 0;
    int binary = 0;
    int power = 1;
    for(int i=0; i<bitCount; ++i) {
        bit = (decimal >> i) & 1;
        binary += bit * power;
        power *= 10;
    }

    return binary;
}