zoukankan      html  css  js  c++  java
  • 一文了解进制之间的原理和转换

    生活中我们使用的数字都是十进制的,而二进制是机器能够识别的最直接的语言。但是二进制又太大,记录起来非常的不方便。所以通常会将二进制转化为八进制或者十六进制。

    日常生活中我们所说的数字 (十进制)在0~9之间,同理 二进制的范围是01,八进制的范围07,十六进制的范围0~15。 那问题来了,当超过9之后,十六进制该如何表示呢? 答案是用af,表示对应的1015

    进制的表达

    在Python中该如何表示每一种进制呢?

    • 默认输入的数字为十进制
    • 以0b开头的数字表示二进制
    • 以0o开头的数字表示八进制
    • 以0x开头的数字表示十六进制
    # 普通的十进制
    a = 12
    print(a) # 12
    
    # 0b表示二进制
    b = 0b100100 
    print(b) # 36
    
    # 0o表示八进制
    c = 0o56
    print(c) # 46
    
    # 0x表示十六进制
    d = 0x2a1
    print(d) # 673
    

    进制之间的转换

    1、十进制转二进制

    将十进制数除2取余数,直到商为0时。

    以12为例,

    12 / 2 = 6  余 0 
    
    6  /  2 = 3  余 0
    
    3  /  2 = 1  余 1
    
    1  /  2 = 0  余 1
    

    从上到下取余数,因此,12 对应的 二进制 为 :1100

    2、二进制转十进制

    把二进阶按权展开,相加即可。如二进制位:1100,按照下面的格式展开

       0	   0	  1		   1
    
    1*2^0	1*2^1	1*2^2	1*2^3	
    

    0 * 1*2^0 + 0 * 1*2^1 + 1 * 1*2^2 + 1 * 1*2^3 = 12

    3、二进制与八进制转换

    将2进制从右到左的顺序按照3位拆分,不足时 补0。 例如二进制:1100可拆分成

    001 100 然后按权展开组合起来即可。

    即:

    0*2^2 + 0 * 2 ^ 1 + 1 * 2 ^ 0 = 1

    1*2^2 + 0 * 2 ^ 1 + 0 * 2 ^ 0 = 4

    因此对应的八进制为 14。

    4、八进制转二进制

    通过对八进制除2取余数,

    1的二进制为1 ,不够3位补0,即001

    4的二进制为100

    因此八进制14转二进制的结果 为:001100

    事实上,日常中用到的主要就是二进制和十进制的转换,其他了解一下就可以了。

    在Python中,已经讲各种进制的转换进行了封装,直接调用即可。

    a = 12
    print(bin(a)) # 0b1100   十进制转二进制
    print(oct(a)) # 0o14  十进制转八进制
    print(hex(a)) # 0xc   十进制转十六进制
    
    # 二进制转十进制
    print(int('0b1100', 2))
    
    # 八进制转十进制
    print(int('0o14', 8))
    
    # 十六进制转十进制
    print(int('0xc', 16))
    

    文末福利,史上最全Python资料汇总(长期更新)。隔壁小孩都馋哭了 --- 点击领取

  • 相关阅读:
    Expedition---POJ
    LIS的优化算法O(n log n)
    Super Jumping! Jumping! Jumping! ---HDU
    数据库连接判断
    android stuido控件
    sql查询语句
    c# 字符串操作
    windows操作
    C# sql操作
    datagridview
  • 原文地址:https://www.cnblogs.com/wyl-0120/p/13659581.html
Copyright © 2011-2022 走看看