python中的运算符

发布于:2024-12-18 ⋅ 阅读:(93) ⋅ 点赞:(0)
1、二进制
  • 二进制都是由0和1组成

  • 二进制标识为:0b

  • 十进制的正整数转二进制:除以2求余,从右到左排列

    print(bin(5))
    
  • 负的十进制整数转二进制:先求其绝对值的二进制,取反,再在末位加1,最后再最左边加上符号位:0表示正数,1表示负数

    示例:求-5的二进制表示:1011

    – 求5的二进制:101

    – 按位取反: 010

    – 在末位加1: 011

    – 加上符号位:1111 1011

  • bit:二进制位,每个二进制字符占的位置

  • byte:字节,一个字节为8个二进制位

  • 通常用1个字节即8个二进制位表示一个数,如5的二进制表示方式为:0000 0101

  • 二进制转十进制:每一位上的数字乘以2的n次方,从右到左,n依次为0、1、2…

    101 --> 1* 2^2 + 0* 2^1 + 1* 2^0 = 5

2、八进制
  • 八进制由0~7共8个数字组成

  • 八进制标识为:0o

  • 八进制转十进制:每一位上的数字乘以8的n次方,从右到左,n依次为0、1、2…

    0o5430 --> 5* 8^3 + 4* 8^2 + 3* 8^1 + 0* 8^0 = 2840

  • 八进制转二进制:求出八进制每个位上的数字对应的3位二进制,再依次拼接即可

    示例:0o5430转0b

    – 求出八进制每个位上的数字对应的3位二进制 5 4 3 0

    ​ 101 100 011 000

    – 再依次拼接:101100011000

3、十六进制
  • 十六进制标识:0x

  • 十六进制由:0~9,a-f,16个字符表示,其中a对应10,f对应15

  • 十六进制转二进制:求出十六进制每个位上的数字对应的4位二进制,再依次拼接即可

    示例:0x 9ab19转0b

    – 9 a b 1 0

    ​ 1001 1010 1011 0001 0000

    – 10011010101100011000

4、位运算
4.1、 ‘&’ 与 运算
  • 位运算中的与运算(&)是将数字转化成二进制,再将&运算符左右两边的数字上下对齐相加,1表示True,0表示False,上下两个均为True时才为True,最后再将结果转成十进制。类似逻辑运算符中的and

  • 示例:print(3 & 2) --> 2

    3的二进制表示:0000 0011

    2的二进制表示:0000 0010

    上下对齐相加: 0000 0010

    转成十进制: 2

4.2、'|'或 运算
  • ’|‘运算是将数字转化成二进制,再将’|‘运算符左右两边的数字上下对齐相加,1表示True,0表示False,只要有一个为True,则为True,最后再将结果转成十进制。类似逻辑运算中的or

  • 示例:print(3 | 2) --> 3

    3的二进制表示:0000 0011

    2的二进制表示:0000 0010

    上下对齐相加: 0000 0011

    转成十进制: 3

4.3、‘~’ 非 运算
  • 将数字转化成二进制,再将每一个二进制位上的数字取反,最后转成十进制

  • 示例:print(~3) --> -4

    3的二进制:0000 0011

    取反: 1111 1100

    转成十进制:-4

4.4、'^'异或 运算
  • 转化成二进制后的两个数上下对齐比较,相同的是0,不同的是1

  • 示例:print(3^5) --> 6

    3的二进制:0000 0011

    5的二进制:0000 0101

    ^运算: 0000 0110

    转成十进制: 6

4.5、‘<<’ 左移
  • 将转成二进制的数从左边开始移走相应的位数,不足8位的从右边开始用0补足8位

  • 也可以理解为十进制的数乘以2的n次方

  • 示例:print(16<<2) --> 64

    16的二进制: 0001 0000

    左移2位: 0100 00

    从右边用0补足8位:0100 0000

    转成十进制: 64

4.6、'>>'右移
  • 将转成二进制的数从右边开始移走相应的位数,不足8位的从左边补足8位,负数补1,正数补0

  • 也可以理解为十进制的数除以2的n次方

  • 示例1:print(16>>2) --> 4

    16的二进制: 0001 0000

    右移2位: 01 0000

    从左边用0补足8位:0001 0000

    转成十进制: 64

  • 示例2:print(-16>>2) --> -4

    -16的绝对值: 16

    16的二进制: 0001 0000

    取反: 1110 1111

    加1: 1111 0000

    右移2位: 11 1100

    从左边用1补足8位:1111 1100

    转成十进制: -4

5、三目运算符
  • 语法:

    content1 if condition else content2
    '''
    判断condition表达式是True还是False;
    如果为True则将if前面的内容content1进行运算,并将content1的结果返回;
    如果为False则将else后面的内容content2进行运算,并返回content2的结果
    '''
    
  • 示例:

    a, b = 1, 2
    result1 = (a + b) if a < b else (a - b)
    print(result1)      # 输出:3
    
    result2 = (a + b) if a > b else (a - b)
    print(result2)     # 输出:-1
    

网站公告

今日签到

点亮在社区的每一天
去签到