美文网首页
第三章 运算符

第三章 运算符

作者: 天刀笑剑钝 | 来源:发表于2018-08-29 22:53 被阅读0次

"""

第三章 运算符

运算符:就是有特殊计算规则的符号

操作数:参与运算的数据

运算符可以根据操作数的不同,分为N元运算符

"""

# 1+2  二元运算符

# a-b

# -1   一元运算符

# 运算符和操作数结合起来,就是表达式

"""

1. 算数运算符

+ - * /

// 向下取整

%  取模

** 求幂

"""

a=21

b=10

print(a+b)

print(a-b)

print(a/b)

print(a*b)

# //向下取整,向负无穷大方向取整

# 做除法运算时,商向下取整

print(10//3)

print(-10//3)

# %取模  是数学意义上取余数

# 被除数 = 除数 * 商+余数

# 余数  = 被除数-除数*商 需要记住这样的公式

# 在python中 % 运算中 商:向下取整

# 10%3

# 10-3*3=1

print(10%3)

# -10%3

#-10-3*-4=-10+12=2

# -3.3335   -4

print(-10%3)

# 真正的取余math函数下

#** 求幂

print(2**5)

# 2. 比较运算符(关系运算)

# 返回值是布尔类型

# ==判断内容是否相等

# !=判断内容是不是不相等   python2中<>

# >  >=  <  <=

print(21==21)

print(21!=21)

print(21<22)

# 3. 身份运算符:判断对象的内存地址是否相同(对象是否是一个)

# is   : 判断是同一片内存

# is not:判断不是同一片内存

a=1

b=1

#基础数据类型(数值、字符串、字节、布尔)

print(a==b)

print(a is b)

print(id(a),id(b),"判断a的id 和b的id")

# 如果是列表这种对象

li1=[1,2,3]

li2=[1,2,3]

print(li1==li2)

print(li1 is li2)

# java中

# ==跟python中is类似代表内存是否一个

# equals跟python中==类似

# id(o)  能够显示当前o对象所在的内存地址

print(id(li1),id(li2))

# is 和==的区别

#is比较的是内存(对象)是否是同一个

#==比较的是内容是否相同

#  练习:

   #1. 7%3    -7%3     7%-3

# 余数=被除数-除数*商  商向下取整

# 7-3*2=1

print(7%3)

# -7-3*(-3)=2

print(-7%3)

# 7-(-3)*(-3)=-2

print(7%-3)

  #2. 定义一个a=5  b=2+3 判断是一下 a==b ?  a is b?

a=5

b=2+3

print(a==b)

print(a is b)

# 4. 逻辑运算符(布尔运算符)

# 返回值可能是布尔类型,也可能是计算值

# and  与:如果and左右 两侧都是True,则返回True,否则返回False

# or   或:如果or左右两侧都是False,则返回False,否则返回True

# not  非:布尔结果取反

print(True and True)

print(True and False)

print(False and False)

print(False or False)

print(True or False)

print(True or True)

print(3==3 and 2!=3)

a=1

b=2

c=3

print(aa)

print(aa)

# 记住,任何一个 类型都可以转换成布尔 类型

# 在逻辑运算符的操作中可以直接使用其他类型。

print(1 and 2)

# 短路现象(重要):

# and : 当第一个表达式为假,则后面的表达式不执行

# or:  当第一个表达式为真,则后面的表达式不执行

# True and True ----True

# False and --------False

# 0 and print("ddddddd")  and的短路现象的证明

# 1 and print("ddddd")  and的短路现象的证明

# True or True/False-----True 

# False or True/False- 

# 1 or print("cccccc")  or短路现象的证明

print(0 or print("cccccc"))  or短路现象的证明

# s=null

# s.fun()

# if s!=null and s.fun()....

a=print("hello world")

print(a)

print(bool(None))

print("aaa")  or  print("bbbb")

print(0 or print("cccccc"))

# a=input("请输入一个数")

# print(a)

#

# s=abs(-100)

# print(s)

# 5. 位运算

"""

正数:原码,反码,补码就是二进制码

负数:

原码:正数的二进制,最高位变1

反码:符号位不变,其余取反

补码:反码+1

计算机中都是以补码形式存储、运算,不管是正数还是负数

补码变回原码:补码基础上找到反码,+1----变回原码

             跟-1 之后再找反码是一致的。

"""

# -10 取原码反码和补码

# (1)先取合适的位数4位机或者8位机 16位机

# 4位机,最小的负数 -7

# 8位机,最小-127

# 16位机,最小的负数

# (2)对应正数的原码找到

#在8位机上

#10 的原码 00001010

# (3)将最高位变1 ,就是定义负数的原码

#-10的原码 10001010

# 反码     11110101

# 补码     11110110

# 补码参数运算之后,仍然得到补码,需要再变回原码。

# 需要观察最高位是不是1,

# 如果最高位是1,那么证明结果是负数,就必须变回原码。

# 如果最高位是0,那么证明结果是整数,则不需要再改变(正数的原码反码补码相同)

# -1+2  使用手工模拟计算机

"""

(1) 估计使用四位机进行运算

(2) 获得两个操作数的补码:如果是负数,

需要先找到对应正数的原码,再找到负数的原码,再找到负数的反码,补码

(3) 运算的 结果,观察最高位是不是1,如果是1,那么证明是负数,需要变回原码。

"""

# 补码

# -1  1111

# 2   0010

#    10001  0001  十进制 1

# 练习:-3-4

#-3  0011----- 1011-----1100--------1101补码

#-4  0100----- 1100-----1011--------1100补码

                                 # 11001--负数---补码

                                 #  1111-----原码  -7

# -6-6

# 8位机

#-6   00000110------10000110-------11111001-----11111010 补码

# 11111010

# 11111010

#111110100---11110100补码----10001100----十进制 -12

print(bin(-6-6))

# 位运算

#&  按位与

#|  按位或

#^  按位异或

#~ 按位取反

#(1)&  按位与:同时为1,结果为1,否则为0

# 0010

# 1111

# 0010  按位与结果

# 0010

# 0101

# 0000  按位与结果

# -1&2

print(-1&2)

# -1   1111

# 2    0010

#      0010 ---十进制2

# 60&-13

# print(60&-13)

# 60---------------00111100补码

# -13--10001101----11110011补码

#                  00110000原码反码和补码

# 十进制            2**5+2**4=48

print(bin(13))

#(2)|  按位或:两个同时为0时,结果为0,否则为1

# 0101

# 1100

# 1101

print(60|-13)

# 60---------------00111100补码

# -13--10001101----11110011补码

#                  11111111补码----10000001--原码  -1

# (3)^ 按位异或,如果两个一样则为0,不一样则为1

# 0101

# 1100

# 1001

print(60^-13)

# 60---------------00111100补码

# -13--10001101----11110011补码

#                  11001111补码----10110001 原码  -(2**5+2**4+1)=-49

# (4)按位取反~:全部取反(包括符号位)

# 0010

# 1101

print(~60)

# 60---------------00111100补码

#                  11000011补码-----10111101原码  -61

# print(2**5+2**4+2**3+2**2+1)

print(~-13)

# -13--10001101----11110011补码

#                  00001100补码------2**3+2**2=12

# 6.赋值运算符

# =赋值

# += 自加

# -=   *=   /=   %=  **=

a=20

# a=a+1

a+=1

print(a)

a**=3

print(a)

# 7.成员运算符

# in    :判断元素是否在一个序列中

# 返回值是布尔类型

# not in

s="hello"

print("h" in s)

print("h" not in s)

# 运算符的优先级

# 算数运算符> 比较运算符 > 逻辑运算符> 赋值运算符

y=3==5 and 6<4

print(y)

# 可以使用()调整优先级,计算机中没有[]  {}

# 运算符运算的时候体现的是结合性,不是运算性

# a+b*c

相关文章

  • 【C语言】运算符与表达式-003

    第三章 运算符与表达式 3.1 常用运算符分类 3.2 算术运算符 3.3 赋值运算符 3.4 比较运算符 C 语...

  • 第三章 SQL语言元素(二)

    第三章 SQL语言元素(二) 算术运算符和函数 InterSystems SQL支持以下算术运算符: + 加法操作...

  • js5-11

    javascript第三章 1、运算符和表达式 1.三目运算符(三元运算符) 2、函数 1.函数:funct...

  • 第三章 运算符

    """ 第三章 运算符 运算符:就是有特殊计算规则的符号 操作数:参与运算的数据 运算符可以根据操作数的不同,分为...

  • 18/7/15 Java流程控制

    打卡Java笔记,这里是《JAVA从入口到放弃》第三章(* ´з`*) 条件语句 三元运算符: 变量 = 布尔?赋...

  • python常用运算符的使用

    python七类运算符 算术运算符比较运算符逻辑运算符赋值运算符成员运算符身份运算符位运算符 赋值运算符 运算符描...

  • 运算符与字符串

    运算符 算数运算符、比较运算符、赋值运算符、逻辑运算符比较运算符:>、<、>=、<=、==、!=赋值运算符:=、+...

  • 4. Python运算符

    算数运算符 加法运算符: + 减法运算符: - 乘法运算符: * 除法运算符: / 幂运算符: ** 整除运算符:...

  • Golang——运算符和格式化输出

    运算符 算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、其他运算符 算术运算符 + 相加- 相减* ...

  • Go语言基础之运算符

    运算符 Go 语言内置的运算符有: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 算术运算符 运算符描...

网友评论

      本文标题:第三章 运算符

      本文链接:https://www.haomeiwen.com/subject/dcslwftx.html