多语言展示
当前在线:188今日阅读:162今日分享:23

python如何判定2进制中某一位是1

程序设计时有时会涉及到位操作,比如在通信速率较低的串口通信中,我们经常使用某一个位作为状态标记,这样我们就必须能够判断这个位是否为1。python和C语言类似,也具有这个功能。
工具/原料

python 3.5

python 的位运算
1

要判断二进制数某一位是否为1,那么需要了解python常用的位运算。右移运算>>:将数由高位向低位移动,高位补0,低位移除,由于高位的0不影响数值大小所以实际显示是省略的。比如讲0b10110001右移一位后变为0b1011000

2

左移运算<<:这个操作符的形式和C语言类似,但是效果是有区别的,它是低位加0,但高位保留,也就是数变大了。比如0b左移2位,运算为:0b << 2,结果为0b110000100,后面添了两个0

3

移位运算还可以加入变量做参数

4

位与运算:这个和C语言形式也是一样的,效果也一致。

二进制数位状态的判断
1

有了位运算的基础,就可以开始程序编写了。基本思路就是:用数字1向左移动,需要判断哪个位则移动到哪里,然后和要判断的数进行与运算,结果位0则表示该位为0,否则为1 。下面代码的功能是要求用户输入要判断的数a,然后输入要判断的位的位置,最低位为1,从右往左位置变大。a = int(input('a = '))b = int(input('输入需要判断第n位:'))if a & (1 << (b - 1)) > 0:    print('数字{}的第{}位为1!'.format(a, b))else:    print('数字{}的第{}位不为1!'.format(a, b))

2

保存代码。

3

运行脚本,用a=33,b=2进行测试,结果判断不为1,用bin(33)显示出33的二进制形式,可以看到第2位确实不为1(从右往左)。

4

判断a=33是的第1位,结果显示为1,判断正确。

5

增加一个a = 158, b = 4,判断为1,实际也是如此。

注意事项

1、注意python左移运算和C语言的区别

推荐信息