各进制转换


进制转换(二、八、十、十六进制转换)


1、进制之间都可以互相转换

  • 二进制(Binary简写B, 添加在数字后面例 (010101)B) 0和1;
  • 八进制(Octal简写O, 添加在数字后面(076451)O) 基数8,每列0-7;
  • 十进制(Decimal简写D, 添加在数字后面) 基数10,每列0-9;日常使用,每进1位表10倍;
  • 十六进制(Hexadecimal简写H, 添加在数字后面),基数16, 每列使用0-9,然后a-f;

2、二、八、十六进制转十进制[例:(101011)B=(53)O=(43)D=(2B)H]

  • Remark十进制转十进制,看到这是不是有点疑惑,往下看
    • 例如(234)D,十进制我们读数两百三十四,那么计算
      • 4 * 10^0 = 4;
      • 3 * 10^1 = 30;
      • 2 * 10^2 = 200;
      • 读数 4 + 30 + 200 = 234;
    • 其他进制转换成十进制把 10 换成其他进制数就行。如下
  • 二进制转十进制
    • 例(101011)B, 从低位到高位(右往左依次计算), 第0位权值位2的0次方,第1位权值位2的1次方,第2位权值位2的2次方,依次类推;
      • 1 * 2^0 = 1;
      • 1 * 2^1 = 3;
      • 0 * 2^2 = 0;
      • 1 * 2^3 = 8;
      • 0 * 2^4 = 0;
      • 1 * 2^5 = 32;
    • 读数把值加起来 1+3+0+8+0+32 = 43; 那么 (101011)B=(43)D;
  • 八进制转十进制
    • 八进制转10进制(53)O;累计方法和二进制一样,逢八进一, 最大不超过7;
      • 3 * 8^0 = 3;
      • 5 * 8^1 = 40;
    • 读数 3 + 40 = 43; (53)O = (43)D;
  • 十六进制转十进制
    • (2B)H, 也是低位到高位一次计算, 累计
      • 11 * 16^0 = 11;
      • 2 * 16^1 = 32;
    • 读数 11 + 32 = 43; (2B)H = (43)D;

3、十进制二进制、八进制、16进制(最后除不尽结束)

  • 十进制转二进制例如(43D);
    • 除以取余数, 读数倒着读;
    • 商43除以2, 商21余数为1;
    • 商21除以2, 商10余数为1;
    • 将商10除以2,商5余数为0;
    • 将商5除以2,商2余数为1;
    • 将商2除以2,商1余数为0;
    • 将商1除以2,商0余数为1;
  • 读数 (101011)B;
  • 十进制转八进制例如(69)D
    • 除了取整数
    • 商69除以8,商8余数5;
    • 商8除以8,商1余数0;
    • 商1除以8, 商0余1;
  • 读数(105)H;
  • 十进制转十六进制(165)D
    • 取余读数
    • 165 / 16, 商10(A)余5;
    • 10 / 16, 商0余数为10;
  • 读数 (A5)H;

4、二进制转十六进制、八进制

  • 二进制转十六进制(1010100.010101)B[三合一法]
    • 取小数点向左(向右)三位计算,如果向左(向右)取三位后,取到最高(最低)位时候,如果无法凑足三位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足三位。REMARK 向左取左边补零,向右取右边补零;
    • 向左 100 => 0 + 0 + 4 = 4;
      • 010 => 0 + 1 * 2^1 + 0 = 2;
      • 001(补齐) => 1 + 0 + 0 = 1;
    • 向右 010 => 0 + 2 + 0 = 2;
      • 101 => 1 + 0 + 4 = 5;
    • 读数124.25;
  • 八进制转二进制(124.25)O[一分三法]
    • 5 => 101;
    • 2 => 010;
    • 4 => 100;
    • 2 => 010;
    • 1 => 001;
    • 读数1010100.010101
  • 二进制转十六进制(11010111.10111010)B[四合一法]
    • 小数点向左(向右)取四位, 位数不够补零, 右取右补零, 左取左补零
    • 向左
      • 0111 => 1 + 2 + 4 + 0 = 7;
      • 1101 => 1 + 0 + 4 + 8 = 13(D);
    • 向右
      • 1011 => 1 + 2 + 0 + 8 = 11(B);
      • 1010 => 0 + 2 + 0 + 8 = 10(A);
    • 读数(D7.BA)H;
  • 十六进制转二进制(D7.BA)H[一分四法];
    • D => ???? (1101)
    • 7 => ???? (0111)
    • ????
    • ????

练习题 (520)D (5201314)D (9527)H、

  • (520)D转二进制 =>
    • 520 / 2 = 260 余0;
    • 130余0;
    • 65余0;
    • 32余1;
    • 16余0;
    • 8余0;
    • 4余0;
    • 2余0;
    • 1余0;
    • 1余1;
  • 读数(1000001000)B
  • (9527)H =>转十进制
    • 7*16^0 = 7;
    • 2*16^1 = 32;
    • 5*16^2 = 1280;
    • 9*16^3 = 36,864;
  • 读数(38,183)D;
  • (5201314)H转二进制
    • 5 => 0101;
    • 2 => 0010;
    • 0 => 0000;
    • 1 => 0001;
    • 3 => 0011;
    • 1 => 0001;
    • 4 => 0100;
  • 读数 (101001000000001001100010100)B
  • (5201314)D转进制16进制
    • 325082余2

后记

十六转八进制可先转二进制(一分四、一分三)再转(三合一、四合一); 或者转十进制(进制的幂次方累加),再转十六进制或者八进制(除以16或者8取余);


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM