【问题标题】:Converting integer (represented as a string) to a binary number in java在java中将整数(表示为字符串)转换为二进制数
【发布时间】:2021-06-23 01:40:02
【问题描述】:

考虑java中的以下函数

public static String changeToBinary(int n) {
    String s = "";
    
    while (n>0) {
        if (n%2==0)
            s="0"+s;
        else
            s="1"+s;
        
        System.out.println(s);
        n=n/2;

    }
    return s;
}

它接受整数并将其转换为二进制数(表示为字符串)。

我想做同样的事情,但也允许大于 java 的最大整数的数字。为此,我应该使用字符串而不是整数作为函数的参数。

如何编写相同的函数,但允许表示可能大于 java 的最大整数值的数字的字符串?

例如,如果输入是changeToBinary("45"),我希望输出是101101

如果输入是changeToBinary("6147483647")(这是一个大于java整数最大值的数字),那么输出是101101110011010110010011111111111

提前致谢。

【问题讨论】:

  • 您可以编写例程来对您的小数/字符串执行%2(简单)和/2(更难)。
  • 或者您可以使用BigInteger(在接口或实现中)。它支持值 -2^Integer.MAX_VALUE(独占)到 +2^Integer.MAX_VALUE(独占),数量很多,应该足以满足几乎所有用例

标签: java binary


【解决方案1】:

其中一种方法是使用BigInteger。使用 BigInteger 和 toString 方法和 2 作为参数传递(因为我们希望字符串是二进制形式),我们可以很容易地得到大数的二进制表示。下面的方法以 String 作为参数来支持更大的数字。
下面是实现:

import java.util.*;

class Binary
{
    public static void main(String [] args)
    {
        String decimal1 = "152246651651";
        String decimal2 = "62262262268823";
        System.out.println(extraLargeBinary(decimal1));
        System.out.println(extraLargeBinary(decimal2));
    }
    static String extraLargeBinary(String dec)
    {
        String bin = new java.math.BigInteger( dec ).toString( 2 );
        return bin;
    }
}

输出:
10001101110010100110111000101100000011
1110001010000010010000000001101000001110010111

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    • 2018-03-01
    • 1970-01-01
    • 2018-07-07
    相关资源
    最近更新 更多