从二进制转换中删除前导零

问题描述 投票:-1回答:1

我想做的是仅使用按位运算符将用户输入的最大2 ^ 32-1的任何数字转换为其二进制值。经过一番摸索和修改后,我得出了这个结论,似乎在给我我想要的...几乎:

public static void main(String[] args) {

  Scanner scan = new Scanner(System.in);

  System.out.print("Enter a number: ");
  String input = scan.nextLine();

  int dec = Integer.parseInt(input);

  ArrayList<Integer> binary = new ArrayList<Integer>();

  for (int i = 0; i < 32; i++) {
     if ((dec & 1) == 0) {
        binary.add(0);
     } else {
        binary.add(1);
     }
     dec = dec >>> 1;
  }

  Object[] binaryArray = binary.toArray();

  for (int i = binaryArray.length - 1; i >= 0; i--) {
     System.out.print(binaryArray[i]);
  }

}

现在是我的问题:这确实输出正确的二进制字符串,但是我需要删除前导零,以便十进制数10以二进制形式出现为1010,而不是00000000000000000000000000001010。

我是CS的第一学期学生,因此,对于解决此问题的任何帮助或清理代码的提示,我们将不胜感激。

java binary bitwise-operators leading-zero
1个回答
1
投票

第三次阅读您的代码,我发现有些棘手。您正在做什么,但是可以有更好的方法。我不会给出答案,但我想看看其他的东西。

© www.soinside.com 2019 - 2024. All rights reserved.