进制

发布时间 2023-12-08 14:26:50作者: 测试开发孵化园

免责声明:java基础资料均来自于韩顺平老师的《循序渐进学Java零基础》教案,具体视频内容可以去B站观看,这些资料仅用于学习交流,不得转载用于商业活动

1.进制

1.1 进制介绍

对于整数,有四种表示方式:

  • 二进制:0,1,满2进1。以0b或者0B开头。
  • 十进制:0-9,满10进1
  • 八进制:0-7,满8进1。以数字0开头表示
  • 十六进制:0-9及A(10)-F(15),满16进1。以0x或者0X开头表示。此处的A-F不区分大小写
public class BinaryTest {
    //演示四种进制
    public static void main(String[] args) {
        //二进制
        int n1=0b1010;
        //十进制
        int n2=1010;
        //八进制
        int n3=01010;
        //十六进制
        int n4=0X10101;

        System.out.println("n1="+n1); //10
        System.out.println("n2="+n2); //1010
        System.out.println("n3="+n3); //520
        System.out.println("n4="+n4); //65793
        System.out.println(0x23A); //570
    }
}

1.2 进制图示

 1.3 进制的转换

1.3.1 二进制转换成十进制

规则:从最低位(右边)开始,将每个位上的数提取出来,乘以2的(位数-1)次方,然后求和

例如:将0b1011转换成十进制的数

0b1011=1*2的(1-1)次方+1*2的(2-1)次方+0*2的(3-1)次方+1*2的(4-1)次方=1+2+0+8=11

1.3.2 八进制转成十进制

规则:从最低位(右边)开始,将每个位上的数提取出来,乘以8的(位数-1)次方,然后求和

例如:将0234转换成十进制的数

0234=4*8^0+3*8^1+2*8^2=4+24+128=156

1.3.3 十六进制转换成十进制

规则:从最低位(右边)开始,将每个位上的数提取出来,乘以16的(位数-1)次方,然后求和

例如:将0x23A转换成十进制的数

0x23A=A(10)*16^0+3*16^1+2*16^2=10+48+512=570

1.3.4 十进制转换成二进制

规则:将该数不断除以2,直到商为0为止,然后将每一步得到的余数倒过来,就是对应的二进制

案例:将34转换成二进制 =0B00100010

 1.3.5 十进制转换成八进制

规则:将该数不断除以8,直到商为0为止,然后将每一步得到的余数倒过来,就是对应的八进制

案例:将131转换成二进制 =0203

 1.3.6 十进制转换成十六进制

规则:将该数不断除以16,直到商为0为止,然后将每一步得到的余数倒过来,就是对应十六进制

案例:将237转换成二进制 =0xED

 1.3.7 二进制转换成八进制

规则:从低位开始,将二进制数每三位一组,转成对应的八进制数即可

例如:请将0b11010101转换成八进制

0b11(3)010(2)101(5) =>0325

0b11 010 101

    21 020 401

1.3.8 二进制转换成十六进制

规则:从低位开始,将二进制数每四位一组,转成对应的十六进制数即可

例如:请将0b11010101转换成十六进制

0b1101(D)0101(5) =>0xD5

0b1101 0101

    8401 0401

1.3.9 八进制转二进制

规则:将八进制数每一位,转成对应的一个3位的二进制数即可

例如:将0237转换成二进制

02(010)3(011)7(111)=0b10011111

2       3     7

010  011 111

1.3.10 十六进制转换成二进制

规则:将十六进制数每一位,转成对应的一个4位的二进制数即可

例如:将0x23B转换成二进制

0x2(0010)3(0011)B(1011)=0b1000111011