# 1bytes(1字节) = 8bit(8位)
# 1字节可以储存的有符号二进制的范围: -127~127
print(bin(127))
"""& 按位与"""
a = 19
b = 25
print(bin(a)) # 0001 0011
print(bin(b)) # 0001 1001
"""
a -->19 --> 0001 0011
b -->25 --> 0001 1001
-----------------------
0001 0001 ->17(十进制)
安位与-->同一位置都是1,当前位置为1,否则为0
"""
print(a & b)
"""按位或"""
a = 19
b = 25
print(bin(a)) # 0001 0011
print(bin(b)) # 0001 1001
"""
a -->19 --> 0001 0011
b -->25 --> 0001 1001
-----------------------
0001 1011 ->(十进制)
安位或-->只要有一个位置为1,那结果就是为1
"""
print(a | b)
"""
原码、反码、补码
正数的原码=反码=补码 (例:7的原码:0000 0111 反码:0000 0111 补码:0000 0111)
负数的原码:是正数的最高位变1,其余不变(例:-7的原码:1000 0111)
负数的反码:是原码的最高位不变,其余都变(例:-7的反码:1111 1000)
负数的补码:是反码+1 (例:-7的补码:1111 1001)
"""
"""按位取反"""
a = 19
b = -126
print(bin(a)) # 0001 0011
print(bin(b)) # 0001 1001
"""
a -->19——> 0001 0011-->1110 1100(全部取反)-->1110 1011(-1)-->1001 0100(反码)
b -->-126-->1111 1110-->1000 0001(反码)-->1000 0010(+1)-->0111 1101(全部取反)
"""
print(~a)
print(~b)
"""^按位异或
当两对应的二进位相异时,结果为1
"""
a = 19
b = 25
print(bin(a)) # 0001 0011
print(bin(b)) # 0001 1001
"""
a -->19 --> 0001 0011[原]
b -->25 --> 0001 1001[原]
-------------------------
0000 1010
"""
print(0b1010)
print(a ^ b)
"""左移"""
a = 5
"""
5 --> 0000 0101 -->0001 0100(左移2位)
"""
print(a << 2)