Python进制之间的转换和位运算整理

简单整理下位运算的用法

value = 'ff1a'
shi = int(value, 16)  # 16进制转10进制 第一个参数value是要转换的值,第二个参数是原数据的进制
print("%s的十进制为:" % value, shi)

er = bin(shi)[2:]  # bin 十进制转换2进制
print("%d的二进制为:" % shi, er)

ba = oct(shi)[2:]  # oct 十进制转换8进制
print("%d的八进制为:" % shi, ba)

shil = hex(shi)[2:]  # oct 十进制转换16进制
print("%d的十六进制为:" % shi, shil)

a = 13
b = 19
a_ = bin(a)[2:]
b_ = bin(b)[2:]
print("%d的二进制数为:" % a, a_)
print("%d的二进制数为:" % b, b_)


or_ = a | b   # 位或运算 有一位为1则为1
print("%d %d 的【位或】运算结果为:%d,解析为二进制:%s" % (a, b, or_, bin(or_)[2:]))


and_ = a & b  # 位与运算 有一位不为1则为0
print("%d %d 的【位与】运算结果为:%d,解析为二进制:%s" % (a, b, and_, bin(and_)[2:]))


a1 = a ^ b  # 位异或 两者相同则为0,不同则为1
print("%d %d 的【位异或】运算结果为:%d,解析为二进制:%s" % (a, b, a1, bin(a1)[2:]))


# 位求反 0变成1,1变成0 ,有一个公式:~a = -(x+1)
print("%d的【位求反】结果是:%d,转为二进制为:%s" % (a, ~a, bin(~a)[2:]))
print("%d的【位求反】结果是:%d,转为二进制为:%s" % (b, ~b, bin(~b)[2:]))


# 右移位 原来的所有位右移,最低位丢弃,最高位使用0填充,相当于整除2
print("%d的【位右移】结果是:%d,转为二进制为:%s" % (a, a >> 1, bin(a >> 1)[2:]))
print("%d的【位右移】结果是:%d,转为二进制为:%s" % (b, b >> 1, bin(b >> 1)[2:]))


# 原来的所有位左移,最低位补0,相当于乘2
print("%d的【位左移】结果是:%d,转为二进制为:%s" % (a, a << 1, bin(a << 1)[2:]))
print("%d的【位左移】结果是:%d,转为二进制为:%s" % (b, b << 1, bin(b << 1)[2:]))

上面代码的输出结果:

ff1a的十进制为: 65306
65306的二进制为: 1111111100011010
65306的八进制为: 177432
65306的十六进制为: ff1a
13的二进制数为: 1101
19的二进制数为: 10011
13 19 的【位或】运算结果为:31,解析为二进制:11111
13 19 的【位与】运算结果为:1,解析为二进制:1
13 19 的【位异或】运算结果为:30,解析为二进制:11110
13的【位求反】结果是:-14,转为二进制为:b1110
19的【位求反】结果是:-20,转为二进制为:b10100
13的【位右移】结果是:6,转为二进制为:110
19的【位右移】结果是:9,转为二进制为:1001
13的【位左移】结果是:26,转为二进制为:11010
19的【位左移】结果是:38,转为二进制为:100110

posted @ 2022-06-02 11:18  平行时空的旅者  阅读(315)  评论(0编辑  收藏  举报