从十进制到二进制的数学计算(java)
我在不使用解析的情况下将十进制数转换为二进制数的算法中遇到问题,这是代码的相关部分:从十进制到二进制的数学计算(java),java,binary,decimal,Java,Binary,Decimal,我在不使用解析的情况下将十进制数转换为二进制数的算法中遇到问题,这是代码的相关部分: public static void dtb(){ System.out.print("\nDenary number to convert?(lower than 255): "); //eight bit conversion int num = sc.nextInt(); int decVal = 128; int saveNum = num; //save point f
public static void dtb(){
System.out.print("\nDenary number to convert?(lower than 255): "); //eight bit conversion
int num = sc.nextInt();
int decVal = 128;
int saveNum = num; //save point for the first input
int[] arr;
arr = new int[8];
do{
if (num - decVal > 0){ //binary to decimal
num = num - decVal;
arr[x] = 1;
} else arr[x] = 0;
decVal = decVal / 2;
x++;
} while (decVal != 1);
System.out.print("\nBinary value of "+saveNum+" is: "+arr[0]+arr[1]+arr[2]+arr[3]+arr[4]+arr[5]+arr[6]+arr[7]);
}
x声明为静态初始化,因此无法查看。我也知道错误在哪里,但我无法找到正确的方法,因此请求帮助。我也是相当新的,所以任何其他方法的帮助将不胜感激。谢谢你的帮助。
输出示例=(输入=42)00101000您需要比较
num-decVal
是否大于或等于0
。因为您有
,所以您缺少大小写,然后它等于0
,您缺少一个1
位
if (num - decVal >= 0){
另外,当decVal
不等于0
而不是1
时,您需要循环,否则您将错过奇数的最后一位
} while (decVal != 0);
更改后的输出:
Binary value of 42 is: 00101010
Binary value of 43 is: 00101011
非常感谢您如期工作,如此简单的改变需要,不知道它是如何从我身边溜走的!