gpt4 book ai didi

java - 用数学方法计算十进制到二进制(java)

转载 作者:行者123 更新时间:2023-12-01 12:26:55 31 4
gpt4 key购买 nike

我的算法在不使用解析的情况下将十进制数转换为二进制数时遇到问题,这是代码的相关部分:

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

关于java - 用数学方法计算十进制到二进制(java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26261818/

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