您的位置:首页 > 编程语言 > Python开发

Python学习笔记之二进制、八进制、十六进制相互转换&原码、反码、补码

2019-06-04 19:19 871 查看

二进制、八进制、十六进制相互转换&原码、反码、补码

  • 三、原码、反码、补码
  • 一、科普电脑存储机制

    电脑的存储方式:以二进制的方式存储。

    1. 内存:(运行空间,掉电清除)

    2. 磁盘:(永久持续化存储空间,除非坏了)

      计算机中处理数据的单位:字节(Byte — B)
      1B = 8b 【1字节=8位】
      1K = 1024B
      1M = 2^10KB
      1G  = 1024M
      1T  =  1024G

    二、二进制、八进制、十六进制相互转换

    1、表示方式

    二进制:0b 标识

    逢二进一
    
    0 + 1 = 1
    1 + 1  = 10
    1 1 1
    1 0 1
    ------
    11 0 0
    111 + 101 = 1100
    110 + 1011 =10001
    1001 + 1011 =10100

    八进制:0o

    0 1 2 3 4 5 6 7

    逢八进一
    
    1 + 6= 7
    1 + 7 = 10
    12 + 56 = 70
    12
    56
    ---
    7 0
    756 + 342 =1320
    756
    342
    ---
    1320
    521 + 1314 =2035
    521
    1314
    -----
    2035

    十进制:0d【在python中若没有标明,默认使用十进制】

    0 1 2 3 4 5 6 7 8 9

    逢十进一

    十六进制:0x

    0 1 2 3 4 5 6 7 8 9 a b c d e f

    逢十六进一
    
    1 + f = 10
    5 + d = 12
    1f + 2d3 = 2f2
    cf4 + 32d = 1021
    2eb + 3ed = 6d8

    2、相互转换

    十进制换算成二进制

    倒除法,余数逆序
    
    5--》101
    12--》1100
    9 --》1001
    15 --》1111
    21 ---》10101

    二进制换算成十进制

    当前的数字乘以2的位数次方,最后相加。【位数从0开始数】

    位数从右往左数,从0开始 2^0 =1

    1 0 1
    1x2^2+0x2^1 +1x2^0= 5
    1010 =10
    11001=25
    110110 =54

    八进制转换二进制

    一位转三位,高位不够补0
    
    12 ---->001010
    563 -->101110011
    721 -->111010001
    542-->101100010

    二进制转换为八进制

    三位一取:低位开始取,高位不够补0
    
    001011100 ==>134
    111 011 101 ==>735
    101 101 001==>551
    10 101 010 ==>252

    十六进制转换二进制

    一位转四位,位数不够高位补0
    
    f --> 1111
    d --> 1101
    3fc ==>11 1111 1100
    78a ==> 111 1000 1010
    de5 ==>1101 1110 0101

    二进制转换十六进制

    四位一取,从低位开始取,高位不够补0
    
    10 0111 ==>27
    1011 0111 ==>b7
    1110 1111 0111 ==>ef7
    1 1011 1101 1110 ==>1bde
    0110 1101 1011==>6db

    3. 在PyCharm中使用.format()函数进行转换

    #!/usr/bin/env python
    #-- coding: utf-8 --
    #-- author:HFZeng --

    转二进制
    “{0:b}”.format(x)
    将x转为二进制

    print("{0:b}".format(10))
    print("{0:b}".format(0o10))
    print("{0:b}".format(0x10))

    1010
    1000
    10000

    “{0:o}”.format(x)
    将x转为八进制

    print("{0:o}".format(0b10))
    print("{0:o}".format(10))
    print("{0:o}".format(0x10))

    2
    12
    20

    “{0:d}”.format(x)
    将x转为十进制

    print("{0:b}".format(10))
    print("{0:b}".format(0o10))
    print("{0:b}".format(0x10))

    2
    8
    16

    “{0:x}”.format(x)
    将x转为十六进制

    print("{0:x}".format(0b10))
    print("{0:x}".format(0o10))
    print("{0:x}".format(10))

    2
    8
    a

    三、原码、反码、补码

    注意计算机是以“补码”的形式存储数据
    反码、补码是为了让计算机能够处理正、负数之间的运算

    1、正数:

    原码,反码,补码三码合一

    2、负数:

    原码:最高位【符号位】为1,其他位与正数的表示相同
    
    反码:除符号位外,其他位按位取反
    
    补码:反码加1

    2^8表示无符号数是 0~255, 表示有符号数是 -127~+127

    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: 
    相关文章推荐