预测解决base10用户输入所需的正确数量的二进制位

时间:2014-12-07 18:01:22

标签: java binary

我正在编写一个程序,它从用户那里获取一个十进制数,然后输出它的二进制数。

e.g。 3(base10)= 00000011(base2)

目前,我的程序仅限于接受0-128范围内的数字(需要8位来解决此问题或1字节)。

我想扩展它以便能够接受更大的数字,这需要更多的位来解决。

目前的课程如下:

public class Number {
    private int numberInput;

    public Number(int input)
    {
       this.numberInput = input;
    }

    public String getBinary()
    {
      StringBuilder sb = new StringBuilder();
      int maxBinary = 128;

      while(numberInput > 0)
      {
        if(numberInput >= maxBinary)
        {
            numberInput -= maxBinary;
            sb.append("1");
        }
        else
        {
            sb.append("0");
        }
        maxBinary = (maxBinary / 2);
    }

    while(sb.length() < 8)
    {
        sb.append("0");
    }

    return sb.toString();
  }
}

基本操作是迭代位位置,然后确定是否应该放置1或0,一旦输入数字被分解为0,如果位长度小于8,它将追加0到输出,直到它是一个8位二进制“数字”,然后输出到控制台。

当需要超过8位时,我是否能够以类似的方式分解数字? 提前致谢

1 个答案:

答案 0 :(得分:0)

感谢James_D。

public class Number {

    private int numberInput;

    public Number(int input)
    {
      this.numberInput = input;
    }

    public String getBinary()
    {
      return Integer.toBinaryString(numberInput);
    }

https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html#toBinaryString-int-