我想做的是仅使用按位运算符将用户输入的最大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的第一学期学生,因此,对于解决此问题的任何帮助或清理代码的提示,我们将不胜感激。
第三次阅读您的代码,我发现有些棘手。您正在做什么,但是可以有更好的方法。我不会给出答案,但我想看看其他的东西。