Skip to content

进制

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

  • 二进制:0,1 满2进1 以0b或者0B开头
  • 十进制:0 - 9 满10进1
  • 八进制:0 - 7 满8进1 以数字0开头
  • 十六进制:0 - 9以及A(10) - F(15) (A-F不区分大小写) 满16进1 以0x或者0X开头

进制的转换

进制的转换是程序员的一个基本功

其他进制转十进制

  • 二进制转十进制

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

    0b1011 = 1 * 2^0 + 1 * 2^1 + 0 * 2^2 + 1 * 2^3 = 11

  • 八进制转十进制

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

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

  • 十六进制转十进制

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

    0x23A = 10 * 16^0 + 3 * 16^1 + 2 * 16^2 = 570

十进制转其他进制

  • 十进制转二进制

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

    34 = 0B100010

    image-20250318161833331

    由于一个字节是有八位的,所以最后的结果位34 = 0B00100010

  • 十进制转八进制

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

    131 = 0203

    image-20250318162118043

  • 十进制转十六进制

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

    237 = 0XED

    image-20250318162316565

其他进制转二进制

  • 八进制转二进制

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

    0237 = 0b010011111

    由于一个字节是有八位的,所以最后的结果位0237 = 0b10011111

  • 十六进制转二进制

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

    0x23B = 0b001000111011

二进制转其他进制

  • 二进制转八进制

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

    0b11010101 = 0325

  • 二进制转十六进制

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

    0b11010101 = 0xd5

Released under the MIT License.