gpt4 book ai didi

java - 从整数到二进制的转换

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:42:17 27 4
gpt4 key购买 nike

有没有办法不使用 Integer.toBinaryString 方法将整数转换为二进制数?
我试图找出转换的算法,但没有成功。

我的任务是:( https://open.kattis.com/problems/reversebinary )

Insert an Int with help of Scanner.
Convert the Int to binary.
Reverse the binary.
Print out the new Int.

例如,数字11在二进制中是1011。
现在反转二进制数 1011 得到 1101(即数字 13)
并打印出 13。

这就是我得到的结果,但我仍然使用了 Integer.toBinaryString 方法并得到了 NumberFormatException

int reverse = 0;          
int number, binary;

Scanner scn = new Scanner(System.in);
number = scn.nextInt();
String b = Integer.toString(number, 2);
binary = Integer.parseInt(b);

while (binary != 0) {
reverse = reverse * 10 + binary % 10;
binary = binary / 10;

}
int newNumber = Integer.parseInt(String.valueOf(reverse), 2);
System.out.println(newNumber);

}
}

最佳答案

首先,您应该使用正确的术语。您没有将 int 转换为二进制。 int 类型(以及所有数字类型)已经以二进制格式存储。当您将 int 转换为 String,或将 String 转换为 int 时,您选择 String 表示使用的基数(例如十进制、二进制、八进制、十六进制等)。这决定了出现在字符串表示中的数字。现在,根据您的示例,您希望生成一个数字,其二进制表示形式与输入数字相反。换句话说,您想反转输入数字的位。

你当前的循环:

while (binary != 0) {          
reverse = reverse * 10 + binary % 10;
binary = binary / 10;
}

计算 binary 的十进制(基数 10)位,并创建一个整数,其值是这些数字按相反顺序排列时的值。

如果你想要输入数字的二进制表示的反转,你应该乘以和除以 2 以获得输入数字的二进制数字(也称为位)并将它们反转:

while (number != 0) {     
System.out.print (number % 2); // prints a binary digit (i.e. 0 or 1)
reverse = reverse * 2 + number % 2;
number = number / 2;
}
System.out.println();
System.out.println(reverse); // prints the decimal representation of the reversed number

如果 number11reverse 将是 13,因为 10111101。此代码将打印反转数的二进制表示形式 (1101) 和十进制表示形式 (13)。

关于java - 从整数到二进制的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34286355/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com