# 十进制转二进制
print(bin(13))
print(bin(45))
# 二进制转十进制
b=0b10111
print(int(b))
c=-2
print(bin(c))
print(bin(-8))
'''
真正的-8的二进制
步骤:
1.先求+8的二进制
0000 1000 (内存里的存储形式)
2.取反
1111 0111
3.
最后位数加一
1111 0111
1
----------
1111 1000
'''
c=0o6430 #0o开头的都是8进制 里面的数字不能超过8
print(int(c))
# 8进制转2进制
# 0o6430
# 6 4 3 0
# 110 100 011 000
# 三个一位数字
# 转换完成:110100011000
'''
十六进制 0x开头 0-9 a-f
'''
d=0x911
print(int(d))
print(9*16*16+1*16+1)
d=0x9ab16
print(int(d))
'''
d=9 a b 1 6
1001 1010 1011 0001 0110
十六进制转二进制:10011010101100010110
四个一位数字
'''
print(int(0b10011010101100010110))
# 验证正确
print(3&2)
'''
位运算 先算出&两边的二进制
0000 0011 & 0000 0010
进行True和False的&运算(1=True,0=False)
0000 0011
0000 0010
-------------
0000 0010
'''
print(~5)
# 取反 对十进制数字对应的二进制进行取反操作
'''
5=ob101
即0000 0101
->1111 1010
看第一位(第一位是 符号位,只要第一位是1的就是负数,第一位是0的就是正数)
->1111 1010 减1
->1111 1001 取反
->0000 0110 =int -6
'''
print(3^5)
'''
异或 ^ 相同的是0 不同的是1
3=0b 0000 0011
5=0b 0000 0101
--------------------
0000 0110
int(0000 0110) = 6
'''
# 二进制的位移
# 左移:
print(2<<1)
print(2>>1)
'''
2的二进制:
0000 0010
0000 0100(<<)
0000 0001(>>)
'''
print(5>>2)
'''
左移 m<<n m*2^n
右移 m>>n m//2^n
'''
python[初学] 进制转换\取反\左移\右移 问题
最新推荐文章于 2022-12-19 20:32:24 发布