Python中的进制转换和位运算
2021/7/26 22:06:51
本文主要是介绍Python中的进制转换和位运算,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
进制转换
一般我们常见的进制有二进制,八进制,十进制,十六进制
话不多说,先看例子,实践是检验真理的唯一标准!
# 利用Python进行数据间的转换 ''' 输出值看前缀: 0b 二进制 0o 八进制 0x 十六进制 默认 十进制 ''' a = 149 print(bin(a)) # binary 转二进制 (无论当前参数是几进制的) print(oct(a)) # 转八进制 print(hex(a)) # 转十六进制
其输出结果分别为:
二进制 0b10010101
八进制 0o225
十六进制 0x95
需注意求进制时使用的函数依次为:bin(),oct(),hex()。另外,浮点型数据无法转进制。
下面再看一下,其他进制转十进制的例子。
给n赋值为 0x558 ,使用type函数可知其数据类型还是整型,不受进制影响。
由于在Python中bin(),求不出负数的二进制码,下面教大家手动计算。
已知正整数5,求其对应的负数的二进制码?
答:先写出5的二进制码,0101,取反-->1 1010,加一,结果为 1 1011 (第一个1是符号位)
位运算
先看一下几个常见位运算的运算符:
& 与运算
| 或运算
^ 异或运算
~ 取反运算
<< 左移运算
>> 右移运算
我们设n1=0b0110,n2=0b0010
n1 & n2 计算时,相当于对其二进制各位进行与运算,结果为:0b0010
0 & 0 =0
0 & 1 = 0
1 & 1 = 1
n1 | n2 计算时,相当于对其二进制各位进行或运算,结果为:0b0110
0 | 0 = 0
0 | 1 = 1
1 | 1 = 1
n1 ^ n2 计算时,相当于对其二进制各位进行异或运算,结果为:0b0100
0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 1 = 0
以上三个位运算符在使用时,是两个数据的运算。当其数据类型为十进制整型时,需转化为二进制数据进行计算。
而取反,左移和右移的运算符只涉及到了一个数据的变换。
对于下面的三个取反计算,我们逐一进行讨论。
print(~n1) # 对n1进行取反 得1 1001,第一个为符号位 说明为负数;已知二进制负数,求十进制负数 print(~7) print(~-4)
(1.) n1 = 0b0110 ,取反即为 各位 0 转1 ,1 转 0 结果为 1 1001
故若已知负数的二进制,要求十进制时。保留符号位为负数,再将后面的二进制,减一,取反,得十进制,带上符号位为负数
得:-7
(2.) 整数7 转为二进制 ,0111,取反--->1 1000,负数,输出结果应为十进制。
故按上题的计算方法,先减一, 0111,取反,1000
得:-8
(3.) 整数-4转为二进制, 即求4的补码(因为正数的补码就是负数的二进制表示)
4的原码 0 0100
4的反码 1 1011
4的补码 1 1100(此为-4的二进制表示)
取反符号 进行取反 0 0011
正数,直接出结果 3
总结:当取反后为正数时,直接输出十进制形式;
当取反后为负数时,需进行 负数的二进制转十进制的运算 (根据上文中的方法可计算)
左移和右移
关于这两个运算符,较为简单,话不多讲,看素材。
n = 12
<< 箭头向左,故为左移
n << 1是将12的二进制代码左移一个单位,即 1100 左移后 11000 ,结果为24(也可理解为n * 2)
>> 箭头向右,故为右移
n >> 1 是将12的二进制代码右移一个单位,即 1100 左移后 0110 ,结果为 6(也可理解为n / 2)
题外话:刚刚看了东京奥运会混双决赛,我们的昕雯组合不敌日本队,3:4落败,全程看的十分揪心,看完后也有些失落,希望接下来的男单女单不要再出什么意外了,东京奥运会中国队加油!
这篇关于Python中的进制转换和位运算的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-25Python编程基础:变量与类型
- 2024-11-25Python编程基础与实践
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器