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
老铁,如果觉得本文对你有帮助,麻烦帮点个右下角的“推荐”,感谢!
本文来自博客园,作者:平行时空的旅者,转载请注明原文链接:https://www.cnblogs.com/yifengyu/p/16337124.html