使用java将32位2的补码转换为十进制
在java中,我很难找到将32位2的补码二进制数转换为十进制数的方法。我要么得到一个溢出错误,要么当数字应该是负数时,它就变成非负数
String bin = "11111111111111111111111111111110";
long foo = Long.parseLong(bin);
System.out.println(foo);
这是我尝试过的方法之一,我想我需要使用long,因为它最多可以容纳64位。任何帮助都会很好。谢谢
你可以在下面搜索框中键入要查询的问题!
在java中,我很难找到将32位2的补码二进制数转换为十进制数的方法。我要么得到一个溢出错误,要么当数字应该是负数时,它就变成非负数
String bin = "11111111111111111111111111111110";
long foo = Long.parseLong(bin);
System.out.println(foo);
这是我尝试过的方法之一,我想我需要使用long,因为它最多可以容纳64位。任何帮助都会很好。谢谢
# 1 楼答案
你是对的-在这种情况下,你需要使用“Long”
由于您使用的是两个补码(不是一个补码),因此可以使用基数为“2”的“parseLong()”:
# 2 楼答案
radix
是所用编号系统的基础输出
# 3 楼答案
如果要解析二进制值,需要提供两个基数
您可以在Java doc page上看到一个示例:
如果没有基数,它将使用base-10,并且
1032
将无法放入long
中请记住,对于32个字符位的字符串,这将为您提供无符号变量。如果要在
long
中使用有符号变量,可以使用:然后再调整它
或者,如果合适,可以强制将其转换为整数:
要求给
Integer.parseInt()
一个有符号的数字意味着它不适合最左边1位的32个字符的二进制字符串