zoukankan      html  css  js  c++  java
  • 进制转换

    进制转换

    | 进制 | 基数 |
    |---|---| --- |
    | 二进制B | 2 |
    | 八进制OQ | 8 |
    | 十进制D | 10 |
    | 十六进制H | 16 |

    任何进制R转十进制

    • 按位权展开求和
    • 如下公式R是进制数,X各个位数
    • 公式:XRn+...+XR2+XR1+XR0+(frac{x}{R}+frac{x}{R^2}+frac{x}{R^3})

    二进制转十进制

    • 512 256 128 64 32 16 8 4 2 1 0.5 0.25 0.125 0.0625
      101011.101 2
      32+8+2+1+0.5+0.125=43.625 10

    八进制转十进制 64 8 1 0.125

    127.5 8=87.625 10
    1×64+2×8+7×1+5×0.125=64+16+7+0.625=87.625 10

    十六进制转十进制 256 16 1 0.0625

    2AB.2 16=673.125 10
    2×256+10×16+11×1+2×0.0625=512+160+11+0.125=673.125 10

    十进制转R进制

    • 整数:X/R取余,自下而上写数
    • 小数:X * R取整,自上面下写数

    十进制转二进制

    方法一

    • 整数:X/R取余,自下而上写数
      (23)10转二进制,R=2。n进制,R=n
      23/2=11...1
      11/2=5...1
      5/2=2...1
      2/2=1...0
      1/2=0...1
      所以(21)10=(10101)2

    • 小数:X * R取整,自上而下写数

    • (23.625)10转二进制
      0.625 * 2=1.25---1(看当前整数位)
      0.25 * 2=0.5---0(看当前整数位)
      0.5 * 2=1---1(看当前整数位)
      所以(23)10=(10111.101)2

    方法二(凑数法)

    • 首先要记住前面的数是后面数的2倍:128 64 32 16 8 4 2 1
    • 23-16=7,7>=0,所以第5位是1(第5位是从右往左数)
    • 7-8=-1,-1<0,所以第4位是0
    • 7-4=3,3>=0,所以第3位是1
    • 3-2=1,1>=0,所以第2位是1
    • 1-1=0,0=0,所以第1位是1

    十进制转八进制

    156.015625 10 = 234.018
    156÷8=19余4
    19÷8=2余3
    2÷8=0余2
    0.015625×8=0.125
    0.125×8=1

    十进制转十六进制

    5463.0625 10 = 1557.116
    5463÷16=341余7
    341÷16=21余5
    21÷16=1余5
    1÷16=0余1
    0.0625×16=1

    二进制转八进制

    • (从中间向两边,三位换一位[4 2 1],小数点左边位数不够左边补0,小数点右边不够右边补0)
      10101110101.10100110 2 = 2565.514 8
      0×4+1×2+0×1=2
      1×4+0×2+1×1=5
      1×4+1×2+0×1=6
      1×4+0×2+1×1=5
      1×4+0×2+1×1=5
      0×4+0×2+1×1=1
      0×4+1×2+0×1=4

    八进制转二进制

    • (从中间向两边,一换三位[4 2 1])
      7132.2713 8 = 111001011010.010111001011 2
      7 = 1×4+1×2+1×1 =111 2
      1 = 0×4+0×2+1×1 =001 2
      3 = 0×4+1×2+1×1 =011 2
      2 = 0×4+1×2+0×1 =010 2
      2 = 0×4+1×2+0×1 =010 2
      7 = 1×4+1×2+1×1 =111 2
      1 = 0×4+0×2+1×1 =001 2
      3 = 0×4+1×2+1×1 =011 2

    二进制转十六进制

    *(从中间向两边,四位换一位[8 4 2 1],小数点左边位数不够左边补0,小数点右边不够右边补0)

    • 10A,11B,13D,14E,15F进1
      10111100101.000111110110 2 = 5E5.206 16
      0×8+1×4+0×2+1×1=5
      1×8+1×4+1×2+0×1=14=E
      0×8+1×4+0×2+1×1=5=5
      0×8+0×4+0×2+1×1=1
      1×8+1×4+0×2+1×1=15=F=10
      0×8+1×4+1×2+0×1=6

    十六进制转二进制

    • (从中间向两边,一位换四位[8 4 2 1])
      B3.E8 16=11000011.11101 2
      B=1×8+1×4+0×2+0×1=12=1100 2
      3=0×8+0×4+1×2+1×1=3=0011 2
      E=1×8+1×4+1×2+0×1=14=1110 2
      8=1×8+0×4+0×2+0×1=8=1000 2

    任何进制R转十进制(扩展)

    公式:sum=sum×R+x

    二进制转十进制

    10011 2 = 19 10
    设sum为十进制数,初始值是0

    x 1 0 0 1 1
    sum 0 1 2 4 9 19
    公式:sum=sum×2+x

    八进制转十进制

    437 8 = 287 10

    x 4 3 7
    sum 0 4 35 287
    公式:sum=sum×8+x

    十六进制转十进制

    457 16 = 10

    x 4 5 7
    sum 0 4 6
    公式:sum=sum×16+x

    ❤️有则改之,无则加勉。如有错误、建议、疑问,评论或联系飞沙QQ:2602629646
    ❤️本文来自作者:MrFlySand,转载请注明原文链接:https://www.cnblogs.com/MrFlySand/p/13620790.html

  • 相关阅读:
    CS round--36
    Vijos 1002 过河 dp + 思维
    汇编模拟36选7
    1137
    E. Mike and Foam 容斥原理
    Even-odd Boxes hackerrank 分类讨论
    112. 作业之地理篇 最小费用最大流模板题
    1550: Simple String 最大流解法
    Sam's Numbers 矩阵快速幂优化dp
    java.sql.SQLSyntaxErrorException: ORA-01722: 无效数字
  • 原文地址:https://www.cnblogs.com/MrFlySand/p/13620790.html
Copyright © 2011-2022 走看看