#coding=utf-8
#"&"按位与运算,是指一个数字转化为二进制,然后这些二进制的数按位来进行与运算
a=7&18
print a
'''首先将7转化为二进制,得到7的二进制值是111,自动补全为8位,即00000111,然后将18转化为二进制,得到18的二进制值是10010,同样补全8位,00010010
我们将00000111和00010010按位进行与运算,得到的结果是00000010,然后转化为十进制,为2'''
#按位或运算,我们要将数字转化为二进制之后按位进行或运算
b=7|18
print b
print b
'''7的二进制是00000111,18的二进制是00010010
我们将00000111和00010010按位进行或运算,得到的结果是00010111,
然后我们将00010111转化为十进制,得到数字23'''
#"^"按位异或
c=7^18
print c
'''异或是指不同为1,相同为0
7的二进制形式是00000111,18的二进制形式是00010010
我们将00000111和00010010按位进行异或运算
得到的结果死00010101,然后将00010101转化为十进制
得到数字21'''
#"~"按位反转~x=-(x+1)
d=~18 #~18=-(18+1)=-19
print d
#"<<"左移
'''比如18左移就是将他的二进制形式00010010左移,即移后称为00100100,即为00100100,为36,左移一格单位相当于乘2,左移两个单位相当于乘4,左移3个单位相当于乘8.
左移n个单位相当于乘2的n次幂'''
e=18<<1
print e
f=3<<3
print f
#coding=utf-8
#"&"按位与运算,是指一个数字转化为二进制,然后这些二进制的数按位来进行与运算
a=7&18
print a
'''首先将7转化为二进制,得到7的二进制值是111,自动补全为8位,即00000111,然后将18转化为二进制,得到18的二进制值是10010,同样补全8位,00010010
我们将00000111和00010010按位进行与运算,得到的结果是00000010,然后转化为十进制,为2'''
#按位或运算,我们要将数字转化为二进制之后按位进行或运算
b=7|18
print b
print b
'''7的二进制是00000111,18的二进制是00010010
我们将00000111和00010010按位进行或运算,得到的结果是00010111,
然后我们将00010111转化为十进制,得到数字23'''
#"^"按位异或
c=7^18
print c
'''异或是指不同为1,相同为0
7的二进制形式是00000111,18的二进制形式是00010010
我们将00000111和00010010按位进行异或运算
得到的结果死00010101,然后将00010101转化为十进制
得到数字21'''
#"~"按位反转~x=-(x+1)
d=~18 #~18=-(18+1)=-19
print d
#"<<"左移
'''比如18左移就是将他的二进制形式00010010左移,即移后称为00100100,即为00100100,为36,左移一格单位相当于乘2,左移两个单位相当于乘4,左移3个单位相当于乘8.
左移n个单位相当于乘2的n次幂'''
e=18<<1
print e
f=3<<3
print f
#">>"右移
'''右移是左移的逆运算,即相对的二进制数向右移动,右移一个单位相当于除以2,右移两个单位相当与除以4,右移3个单位相当于除以8,右移n个单位相当于除以2的n次幂'''
g=18>>1
print g
h=18>>2
print h
#"<="小于等于符号,比较运算,小于或者等于,返回一个bool值
h=3<=3
print h
i=4<=3
print i
#">="
j=1>=3
print j
k=4>=3
print k
#"=="比较两个对象是否相等
l=12==13
print l
m="hello"=="hello"
print m
#not逻辑非
n=True
m=not n
print m
o=False
print not o
#and逻辑与
'''True and True 等于True
True and False 等于False
False and True 等于Flase'''
print True and True
#"or";逻辑或
'''True and True 等于True
True and False 等于True
False and True 等于Flase'''
print True and False