如何打印十进制数的二进制

tvokkenx  于 2022-09-17  发布在  Java
关注(0)|答案(4)|浏览(287)

任何人都可以用更好的方式编写这个程序。。

/*******

* @Author Lokanath Behera
* @Mob-[removed]
* @Email-[removed]@gmail.com
*****/   

class Binary{ 
    public static void main(String[] args){ 
        int no=19999; 
        int i=0; 
        int size=no/2; 
        int a[]=new int[++size]; 
        while(no>0){   
        if(no%2==0){ 
            a[i++]=0; 
        } 
        else{ 
            a[i++]=1;   
        } 
        no /=2; 
        }   
        for(int j=i-1;j>=0;j--){   
            System.out.print(a[j]);   
        } 
    } 
}  
7uzetpgm

7uzetpgm1#

定义better。例如,一种优雅的方法是递归地执行。
即使与环路方法保持一致,也可以使用

// The length will be the logarithm of no to base 2, plus 1 
int size = Math.log(no) / Math.log(2) + 1;

还有一些方法可以更有效地计算以2为底的对数,因此如果效率相关,可以使用这些方法。
这是否涵盖了它,或者您是否希望以特定的方式改进它?

sshcrbum

sshcrbum2#

嘿,lokanath60,while循环中不需要if-else语句。

uyto3xhc

uyto3xhc3#

很好,你可以用

while(no > 0){ 
  a[i++] = no % 2; 
  no /=2; 
}
wqlqzqxt

wqlqzqxt4#

尝试以下代码

public class BinaryDecimal {   
    public static void main(String[] args) { 
        long num = 110110111; 
        int decimal = convertBinaryToDecimal(num); 
        System.out.printf("%d in binary = %d in decimal", num, decimal); 
    }   
    public static int convertBinaryToDecimal(long num) 
    { 
        int decimalNumber = 0, i = 0; 
        long remainder; 
        while (num != 0) 
        { 
            remainder = num % 10; 
            num /= 10; 
            decimalNumber += remainder * Math.pow(2, i); 
            ++i; 
        } 
        return decimalNumber; 
    } 
}

相关问题