• 速学进制之间的转换


    进制

    所谓进制就是进位制,是人们规定的一种进位方法。对于任意一种进制--X进制,就是当某一位置上的数运算逢X进一位。十进制是逢十进一,二进制是逢二进一,八进制是逢八进一,一次类推,X进制就是逢X进一。

    各种常见进制

    二进制

    0 1 10 11 100 101 110 111...

    八进制

    0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20...

    十进制

    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

    十六进制

    0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 ...19 1A 1B 1C...

    进制之间的转换(正整数)

    其他进制转换为十进制

    • 二进制转换为十进制

        1010=1*2^3+0*2^2+1*2^1+0*2^0=10
      
    • 八进制136转换为十进制

        136=1*8^2+3*8^1+6*8^0=94
      
    • 十六进制127转换为十进制

        127=1*16^2+2*16^1+7*16^0=295
      

    十进制转换为其他进制

    • 十进制30转换为二进制

        30/2=15  余 0
        15/2=7   余 1
        7/2=3    余 1
        3/2=1    余 1
        结果是:11110(最后一步的商+倒序余数)
      
    • 十进制149转换为八进制

        149/8=18   余 5
        18/8=2     余 2
        结果是:225
      
    • 总结:十进制转换为N进制方法是将十进制数除以N,得到的商在除以N,直到得到的商小于N,然后在旁边标出各步的余数,最后从最后一次商开始倒序拼上余数写出,高位补零。

    八四二一快速转换法

    • 二进制10010转换为十进制

        10010=2^1 + 2^4 =18
      

    技巧:挑出里面所有的1,熟记2的各个次方的值

    • 十进制69转换为二进制

        69=64 + 4 + 1 =1000101
      

    技巧:把数拆分成几个2的次方数的和

    • 二进制111010101转换为十六进制

        1 1101 0101	对应 1 D 5
        结果为:1D5
      

    技巧:按照"四位一组"来算,不够高位补0(八进制余十六进制运算方法同,只不过是按“三位一组”计算。)

    • 十六进制3B转换为二进制

        3 B 对应 0011 1011 
        结果为:111011
      

    提示:不论是十进制与八进制、十六进制之间的转换,还是八进制与十六进制之间的转换都可以先将其转换为二进制再进行目标进制转换。

    • 2的各个次方数

        2^0=1
        2^1=2
        2^3=8
        2^4=16
        2^5=32
        2^6=64
        2^7=128
        2^8=256
        2^9=512
        2^10=1024
      

    进制转换(小数)

    十进制转为二进制

    • 十进制数10.35转换为二进制

        整数部分 10 转换为二进制为 1010
        小数部分 0.35
        0.35 * 2 = 0.7 取 0 小数部分 0.7
        0.7 * 2 = 1.4  取 1 小数部分 0.4
        0.4 * 2 = 0.8  取 0 小数部分 0.8
        0.8 * 2 = 1.6  取 1 小数部分 0.6
        0.6 * 2 = 1.2  取 1 小数部分 0.2
        0.2 * 2 = 0.4  取 0 小数部分 0.4
        无限循环...
        结果:1010.010110...
      
    • 总结

      小数部分只有是0.5 0.25 0.75 0.125 0.0625等可以是有限小数,小数转换为分数后,分母是2的次方数才可以转为有限小数。

    • 同样适用十进制转其他进制

    二进制转为十进制

    • 二进制1001.1011转为十进制

        整数部分 1001 转为十进制为 9
        小数部分:
        0.1011 = 1*2^-1 + 0*2^-2 + 1*2^-3 + 1*2^-4=0.5 + 0 + 0.125 + 0.0625=0.6875
        结果:9.6875
      
    • 同样适用其他进制转换为十进制

    • 熟记2的负次方数

        2^-1 = 0.5
        2^-2 = 0.25
        2^-3 = 0.125
        2^-4 = 0.0625
        2^-5 = 0.03125
        2^-6 = 0.015625
        2^-7 = 0.0078125
        2^-8 = 0.00390625
        2^-9 = 0.00195312
        2^-10 = 0.00097656
      

    二进制和八进制和十六进制的小数转换

    • 二进制11.10111001转换为八进制

        整数部分 11 转为八进制为 2
        小数部分 进行拆分 三个一组,不足右补零
        101 -> 5
        110 -> 6
        010 -> 2
        结果为:2.562
      
    • 同样适用二进制转为十六进制

    • 十六进制a.2bfd转为二进制

        整数部分 a -> 1010
        小数部分 :
        2 -> 0010
        b -> 1011
        f -> 1111
        d -> 1101
        结果:1010.0010101111111101
      
    • 同样适用八进制转为二进制

  • 相关阅读:
    HotSpot 虚拟机垃圾回收算法实现
    多线程死锁的产生原因以及如何避免
    Java异常实战——OutOfMemoryError
    MySQL数据库中的四种隔离级别
    Java运行时数据区概述
    MySQL 字符集和校对
    debezium关于cdc的使用(下)
    debezium关于cdc的使用(上)
    对xxl-job进行simpleTrigger并动态创建任务扩展
    折腾Java设计模式之单例模式
  • 原文地址:https://www.cnblogs.com/pangwl/p/7196129.html
Copyright © 2020-2023  润新知