• 04 位运算符、运算符优先级


    # ###(7)位运算符:    & | ~ ^ << >>
    var1 = 19
    var2 = 15
    # & 按位与
    res = var1 & var2
    print(res)
    '''
    10011
    01111
    00011
    '''
    # | 按位或
    res = var1 | var2
    print(res)
    '''
    10011
    01111
    11111
    '''
     
     
    # << 左移
    """ n<<m  n乘以2的m次幂  """
    res = 5 << 2  # 相当于5 * 2的2次幂
    """
    00000101
    00010100
    4+16 = 20
    """
     
    # >> 右移
    '''n>>m n除以2的m次幂'''
    res = 5 >> 1
    """
    00000101
    00000010
    """
    print(res)
     
    # ^ 按位异或
    """两个值[不相同]方为真,两个值[相同]方为假"""
    res = var1 ^ var2
    '''
    10011
    01111
    11100 
    '''
    print(res)
    # ~ 按位非    - ( n+1 )
    res = ~19
    res = ~-21
    print(res)
     
     
    # 运算符的优先级
    '''
    一元运算符: 同一时间只操作一个数字运算的 ( ~ - ) ~19
    二元运算符: 同一时间只操作两个数字运算的 (+ - * /) 5 + 3
     
    整体一元运算符优先级 > 二元运算符
    所有运算符当中 ** 幂运算优先级最高
    所有运算符当中 = 赋值运算符优先级最低
     
    单独的一种运算符优先级顺序如下:
    乘 除 > 加 减
    () > not > and > or
    ~ > (<< >>)> & > ^ > |
     
    除此之外,剩下的运算符优先级如下:
    算数运算符 > 位运算符 > 比较运算符 > 身份运算符 > 成员运算符 > 逻辑运算符
    赋值运算符 单独拿出来作为最后,把值计算好之后再进行赋值
    '''
    res = 5+5 << 6 // 3 is 40 and True
    print(res) # True 
    '''
    5+5 << 2 is 40 and True
    10 << 2 is 40 and True
    40 is 40 and True
    True and True => True 
    '''
    # 用一个小括号抱起来 作为一个整体,让别人能够看懂代码
    res = (5+5) << (6 // 3) is 40 and True 
    print(res)
    

      

  • 相关阅读:
    HiveQL:数据定义
    linux学习整理
    Hive中问题解决整理
    Hive 数据类型和文件格式
    neo4j 简要安装步骤
    Leetcode 刷题笔记二 两数相加(使用链表) -- scala版本
    leetcode 刷题笔记一 两数之和 scala版本
    windows 安装 tensorflow
    elemnetui 下载,及引用
    cenos7 安装mysql
  • 原文地址:https://www.cnblogs.com/eliwen/p/10968247.html
Copyright © 2020-2023  润新知