二进制字符串到整数转换器中的java错误
我在代码中实现了二进制字符串到整数的方法。问题是我得到了错误的方法输出结果的最后两位数字,例如:
应为结果:111111000010010110000100
结果:1111110000100101100000011
结果的最后两位数总是有问题
任何帮助都将不胜感激
代码:
public static int binaryStringToInteger (String binaryString){
char[] digits = binaryString.toCharArray();
int binaryInteger = 0;
int count = 0;
for(int i=digits.length-1;i>=0;i--)
{
if(digits[i]=='1')
{
binaryInteger +=(int)Math.pow(2, count);
}
count++;
}
return binaryInteger;
}
# 1 楼答案
我希望这个测试结果会有所帮助。 它非常明确地告诉你发生了什么
# 2 楼答案
除了int类型只能容纳这么多之外,您的代码没有任何错误。Int保存4个字节,即8bitsx4=32位,第一个字节保留用于符号,如果为1则为负,如果为0则为正。 尝试使用包含64位的long int:
也请检查此项:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
# 3 楼答案
您遇到了转换问题:
2^31 > 2^31-1 = Integer.MAX_VALUE
因此language specification中的以下部分描述了从
double
到int
的转换:因此,最后增加的值是
2^31-1
,而不是引起问题的2^31
# 4 楼答案
转换
binaryInteger
时:# 5 楼答案
我认为有符号整数值有问题,因此应将适当的字符(我认为最后一个字符)视为符号位,如下所示
也是整数。tobinarysting()创建一个无符号二进制字符串