zoukankan      html  css  js  c++  java
  • 第三章 运算符

           运算符

    定义:有特殊计算规则的符号
    > 操作数: 参与运算的数据
    > 运算符: n元运算符,取决于操作数的数量
    > 表达式: 操作数和运算符的结合

    一、 算数运算符

    + - * /     //、  **、  %、
    //(地板除)
    % (取模) --- <被除数 - 商(向下取整)*除数>,在负数是和取余不同
    # 取模运算符号和除数相同

    **(乘幂)

            import math
    math.fmod() --- 取余(结果为浮点类型,结果符号和被除数相同)

    eg.
    		# 地板除 
    		(-10//3) --- -4
    		(10//3)  ---  3
    		(10%3)   ---  1
    		(-10%3)  ---  2
    		# 取余 - 看被除数
    		math.fmod(-10, -3)  --- -1.0
    		math.fmod(-10,  3)  --- -1.0
    		math.fmod(10,  -3)  ---  1.0
    		# 取模 - 看除数
    		-10%-3             --- -1
    		 10%-3             --- -1
    		-10% 3             ---  1

    ####专题,取整方向


    二、比较运算符(关系运算符)

    1. 常见比较符

    > 主要有:== > < >= <= != 
    > 返回值为布尔类型
    > == 用于判断内容是否相等,对象不一定相等
    数值、字符串、字节、元组一般是同一对象

    2. 链式比较

                    (支持短路比较、可以不同向)

    1>3>'a' --- 此处前面部分返回False,后面不在比较
    1<3>7

    三、 身份比较符

    > is / is not
    > 可以使用id()查看对象内存地址 
    > 数值、字符串、字节、元组,相同内容使用同一对象
        列表、字典、集合,同一内容也创建不同对象
      

    四、 逻辑运算符

    > 与and 、或or、 非 not
    > 返回值可能是布尔类型,可能是计算值

    1. 运算符两侧都是布尔表达式
    2. 运算符两侧是其他类型
    > 返回两个表达式中的一个
    > and如果第一个表达式是True,那么返回第二个表达式;
    否则返回第一个表达式;
    > or 如果第一个表达式是True,那么返回第一个表达式;
    否则返回第二个表达式;
    # 返回表达式示例
    print(3 and 'abc') --- 'abc'
    print(0 or  'abc') --- 'abc'
    3. 短路现象
    > 如果and表达式第一个为False,或者or第一个表达式为True,不执行第二个表达式
    > and 优先级高于 or
            
        #后面表达式是None,整体打印None
        print(True and print('Pitfall')) 
        # 证明优先级
        print( 1 or 1  and 0)
        print((1 or 1) and 0)
        print( 1 or(1  and 0), end= '
    -------------------------
    ')
        # 证明短路
        print( 0 and print('我被没有被短路'))
        print( 1 or  print('我被没有被短路'))

    五、 位运算符

    返回值:十进制数

    1. 原码,反码,补码

    > n位机可以储存到的最大数:2**(n-1)-1
    > 正数:原码、反码、补码都是二进制码
      负数:原码 --- 二进制码,最高位取1
    反码 --- 除符号位,其余取反
    补码 --- 反码+1
    > 计算机以补码存储数据,所有的运算都使用补码

    > 补码转原码:取反加一(取反和+1不分先后)


    > 原码的显示 --- 和-1与运算

    > 补码的显示 --- 和0b11111111与运算

    print(bin(value&-1))

    2. 位运算符

    # 手工计算时,取反、异或结果可以使用计算机,估计使用几位机
    (1) & 按位与 如果都是1返回1,否则返回0;
    (2) | 按位或 如果存在1返回1,否则返回0;
    (3) ^ 按位异或 不同为1,相同为0;
    (4) ~ 按位取反 包括符号全部取反
    (5) << 左位移 右侧用0填充,左侧如果溢出会影响结果
    不溢出的前提下相当于该数值乘以2 --- 计算机不会溢出的
    (6) >> 右位移    符号位正数填充0,负数填充1,最右侧删除

    如果能整除,除以二;不能整除则向下取整(//)

    # 1. 手工计算-27的二进制原码、反码,补码。使用程序输出-27的二进制码,想办法输出补码的显示。验证是否正确
    def que1():
        # 手工计算
        print('''
        十进制:    -27         -10         
        原码:      10011011   10001010
        补码:      11100101   11110110
        ''')
        # 验证
        num = int(input('请输入一个整数:'))
        print('{}的补码是{}'.format(num, bin(num&0b11111111)))
        print('{}的原码是{}'.format(num, bin(num & -1)))
    # que1()

    运行结果:

        十进制:    -27         -10         
        原码:      10011011   10001010
        补码:      11100101   11110110
        
    请输入一个整数:-27
    -27的补码是0b11100101
    -27的原码是-0b11011

    六、赋值运算符

    = 、+=(+可以用-,*,/等替代)

    七、成员运算符

    in  、not in


    八、运算符优先级

    1. 算数运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符
    2. ()可以调节优先级
    3. 比较运算符中,and优先级高于or



  • 相关阅读:
    ping-tool
    yum 安装 5.6
    音视频编辑
    图表
    VC2013设置输出文件目录
    hdu 4679 Terrorist’s destroy 树形DP
    poj 3580 SuperMemo splay tree(重口味)
    hdu 1890 Robotic Sort splaytree+懒惰标记
    bzoj 1588 [HNOI2002]营业额统计 splay tree
    bzoj 1503 [NOI2004]郁闷的出纳员 splay tree
  • 原文地址:https://www.cnblogs.com/geoffreyone/p/9899771.html
Copyright © 2011-2022 走看看