Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从十进制到二进制的数学计算(java)_Java_Binary_Decimal - Fatal编程技术网

从十进制到二进制的数学计算(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

非常感谢您如期工作,如此简单的改变需要,不知道它是如何从我身边溜走的!