欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-13 08:05:42
...

Java的进制转换

 进制转换原理

    十进制 二进制:

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

      6 --> 110

  二进制 十进制

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

      110 ->0*20 + 1*21 + 1 * 22

                     0  +  2   + 4=6

      0   0  1  1 0 1 0 1

    128 64 32 16 8 4 2 1    = 53

 当 8bit 都是 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 161

        以  90为例:

         0101-1010

           ----   ----

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

 二进制 八进制

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

          111 = 4+2+1 = 7 81

    前面位数不够 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:


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

引入负数测试代码:

	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中的进制转换及转换函数