JAVA编程,请问怎么将十进制数转换成二进制输出,又怎么将二进制数转换成十进制输出?

Python015

JAVA编程,请问怎么将十进制数转换成二进制输出,又怎么将二进制数转换成十进制输出?,第1张

1、创建java类,TestNumConv.java;

2、编写java函数,十进制转二进制;

public static void decimalToBinary(int n) {

String str = ""

while (n != 0) {

str = n % 2 + str

n = n / 2

}

System.out.println(str)

}

3、编写java函数,二进制转十进制;

public static void binaryToDecimal(String n) {

System.out.println(Integer.parseInt(n, 2))

}

4、在main方法中,分别调用该两个函数,执行结果满足要求;

TestNumConv.decimalToBinary(123)

TestNumConv.binaryToDecimal("11011")

利用Java API直接转换

十进制数如何转换为二进制数,这在java API 中有一个方法,Integer.toBinaryString( ) 括号里面写上你要转换的十进制数,这样可以直接转换。例如:

public static void main(String[] args) {

        十进制转换为二进制

        System.out.println(Integer.toBinaryString(10))

    }

通过求余,求商,并计算值(例如:把二进制的1010 直接输成十进制的1010)实现

public static void main(String[] args) {

        // TODO Auto-generated method stub

        int a = 123//定义一个变量并赋给他一个十进制的值

        int remainder//定义一个变量用于存储余数

        int sum = 0//定义一个变量用于存放和

        int k = 1//定义一个变量控制位数

        while(a != 0){

            remainder = a % 10//对目标数字求余

            a /= 2//对目标数字求商

            sum = sum + remainder * k//求和

            k *= 10//改变位数

        }

        System.out.println("10进制的123转换为2进制结果为:" + sum )

    }但是这种方法存在一个问题:因为int类型是有取值范围的,如果转换的二进制数字超出了范围(例如:10011100110110)这个数字明显超出了int的取值范围,这样我们用int类型的sum进行存储的时候他就会自动转换为一个其他的数字。并且这个方法没有办法求负数的二进制数。

在方法二的基础上使用字符串对结果集进行存储

public static void main(String[] args) {

        int n = -10

        String result = ""

        boolean minus = false

        //如果该数字为负数,那么进行该负数+1之后的绝对值的二进制码的对应位取反,然后将它保存在result结果中

        if(n < 0){

            minus = true

            n = Math.abs(n + 1)

        }

        while(true){

            int remainder = (!minus && n % 2 == 0) || (minus && n % 2 == 1) ? 0 : 1

            //将余数保存在结果中

            result = remainder + result

            n /= 2

            if(n == 0){

                break

            }

        }

        //判断是否为负数,如果是负数,那么前面所有位补1

        if(minus){

            n = result.length()

            for(int i = 1 i <= 32 - n i++){

                result = 1 + result

            }

        }

        System.out.println(result)

    }用这种方法就能很好解决int类型的越界问题,能解决所有的十进制转换二进制的问题。

java进制转换

java中进行二进制,八进制,十六进制,十进制间进行相互转换

十进制转成十六进制:

Integer.toHexString(int i)

十进制转成八进制

Integer.toOctalString(int i)

十进制转成二进制

Integer.toBinaryString(int i)

十六进制转成十进制

Integer.valueOf("FFFF",16).toString()

八进制转成十进制

Integer.valueOf("876",8).toString()

二进制转十进制

Integer.valueOf("0101",2).toString()