java中的进制转换

Posted jimshi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中的进制转换相关的知识,希望对你有一定的参考价值。

java中的进制转换及转换函数

转自:https://blog.csdn.net/V0218/article/details/74945203

Java的进制转换

 进制转换原理

    十进制 转 二进制:

    原理: 对十进制数进行除 2 运算取余。

      6 --> 110

  二进制 转 十进制

 原理: 二进制 乘以 2 的n次幂 的过程

      110 ->0*2+ 1*2+ 1 * 22

                     0  +  2   + 4=6

      0   0  1  1 0 1 0 1

    128 64 32 16 8 4 2 1    = 53

 当 8个bit 都是 1  最大是 255 那么一个字节最大就是 255

 

   负数的二进制:

 其实就是 十进制数 转换成 二进制数后 取反+1

    以-6为例,一个整数类型 是 4个字节 1 int = 4 byte = 32 bit

     0000-0000  0000-0000  0000-0000  0000-0110

     1111-1111  1111-1111  1111-1111  1111-1001 取反

  + 0000-0000  0000-0000  0000-0000  0000-0001  +1

       --------------------------------------------------

     1111-1111  1111-1111  1111-1111  1111-1010  = -6

 

 二进制 转 十六进制

    先将十进制 转成 二进制 --> 十六进制

    四个二进制位 就是 一个 十六进制位

         1111 最大值是 8+4+2+1 = 15 逢16进1

        以  90为例:

         0101-1010

           ----   ----

           5        A        90 十六进制表示为 0x5A

 二进制 转 八进制

    三个二进制位 就是一个 八进制位

          111 = 4+2+1 = 7 逢8进1

    前面位数不够 拿0补

         001-011-010

            --- --- ---

            1   3   2   = 0132

进制转换原理

 

 
/*
 
该类用于进制转换
 
*/
 
public class Demo_2

    public static void main(String[] args)
    
        //System.out.println("hello");
        System.out.println(Integer.toBinaryString(365));//十进制转换成二进制
        System.out.println(Integer.toHexString(365));//十进制转换成十六进制
        System.out.println(Integer.toOctalString(365));//十进制转换成8进制
        System.out.println(Integer.toString(10,16));//十进制转换成对应进制数,不适合用于负数,第一个参数为转换数,第二个参数为转换进制
 
        System.out.println(Integer.parseInt("1010",2));//N进制转换成十进制,返回类型为int,第一个参数为字符串,第二个参数为进制
        System.out.println(Integer.parseInt("1010",8));
        System.out.println(Integer.parseInt("1010",16));
 
        System.out.println(Integer.valueOf("1010",2));//N进制转换成十进制,返回类    型为int,第一个参数为字符串,第二个参数为进制
        System.out.println(Integer.parseInt("1010",8));
        System.out.println(Integer.parseInt("1010",16));
     
                                 

 

在dos下的运行结果1:

 
技术图片

引入负数测试代码:

System.out.println(Integer.toString(10,2));//十进制转换成对应进制数,不适合用于负数
System.out.println(Integer.toString(-10,2));
System.out.println(Integer.toString(10,8));//第一个参数为转换数,第二个参数为转换进制
System.out.println(Integer.toString(-10,8));
System.out.println(Integer.toString(10,16));
System.out.println(Integer.toString(-10,16));

在dos下的运行结果2:

技术图片

以上是关于java中的进制转换的主要内容,如果未能解决你的问题,请参考以下文章

JAVA中的进制转换问题

利用java中的BigInteger实现进制转换

十六进制转换十进制(JAVA版)

java怎么数据库中的二进制转换成图片类型

将 int 转换为 Java 中的二进制字符串表示形式?

如何将Mac地址转换为十六进制并将其传递给java中的字节数组