如何用python判断某个二进制位数是否为偶数?

num%2——取出二进制的最后一位 num/2——右移去掉二进制的最后一位 通过while循环,依次取出二进制的最后一位数字判断是否为1,若为1则count++,while(num)只有当num变为0时循环结束。问题:在测试-1出现bug,-1的二进制中应该有32个1,输出却为0。我们将-1带入代码中发现-1%2=0,count不...
如何用python判断某个二进制位数是否为偶数?
下面是三种方式:
①通过模2除2(%2、/2)的方法
num%2——取出二进制的最后一位
num/2——右移去掉二进制的最后一位
通过while循环,依次取出二进制的最后一位数字判断是否为1,若为1则count++,while(num)只有当num变为0时循环结束。
问题:在测试-1出现bug,-1的二进制中应该有32个1,输出却为0。我们将-1带入代码中发现-1%2=0,count不增,然后-1/2=0,循环结束,故输出count的值为0。
解决方案:将变量num的数据类型改为unsigned int (无符号整型),此时表示的是正的整型的最大值,所以当num=-1时,表示二进制为32个1的正数,通过循环可以输出正确的个数。
②通过右移操作符(>>)、按位与操作符(&)实现
Example:当num=10(1010),通过右移操作num>>i,二进制向右移动i位。
//i=0,num>>0,右移0位,此时(1010)&(0001)=0
//i=1,num>>1,右移1位,此时(0101)&(0001)=1,count++
//i=2,num>>2,右移2位,此时(0010)&(0001)=0
//i=3,num>>3,右移3位,此时(0001)&(0001)=1,count++
……
因为二进制共32位,所以循环要执行32次后结束,得到count为2。
缺点:不够高效,必须循环32次。
③通过按位与操作符(&)巧妙运算实现
Example: 当num=15时,
1//num&(num-1)=(1111)&(1110)=(1110)
2//num&(num-1)=(1110)&(1101)=(1100)
3//num&(num-1)=(1100)&(1011)=(1000)
4//num&(num-1)=(1000)&(0111)=0 ,循环停止。共执行4次while循环。

扩展资料
一、指定的某一位数置1
宏 #define setbit(x,y) x|=(1<<y)
二、指定的某一位数置0
宏 #define clrbit(x,y) x&=~(1<<y)
三、指定的某一位数取反
宏 #define reversebit(x,y) x^=(1<<y)
四、获取的某一位的值
宏 #define getbit(x,y) ((x) >> (y)&1)

2023-08-13
mengvlog 阅读 19 次 更新于 2025-07-18 13:09:40 我来答关注问题0
  •  文暄生活科普 python中的~按位取反的作用是什么?

    此外,按位取反还能够用于判断二进制位的设置情况,如检查某个特定位是否为1或0,这对于某些算法实现非常关键。在实际应用中,通过巧妙地使用按位取反,可以简化代码逻辑,提高程序运行效率。总之,Python中的按位取反操作提供了一种高效而灵活的方式,用于处理整数的二进制位,对于增强代码的性能和实现复...

  •  文暄生活科普 python中的按位取反运算

    二、Python中的按位取反运算符 在Python中,执行按位取反运算非常简单。只需在变量或数字前面使用波浪线符号即可。例如,如果有一个变量`a`的值为5,对`a`进行按位取反运算后,结果将是`2`。这是因为数字5的二进制表示中的第一位是1,经过取反后变成了0。需要注意的是,这种操作会直接修改原有...

  •  瑞评科技观 二进制是0b还是ob

    例如,在Python中,你可以这样定义一个二进制数:`num = 0b1010`,这表示`num`变量的值是二进制的1010,即十进制的10。使用“0b”前缀可以确保代码的可读性和准确性,避免与其他进制的数混淆。值得注意的是,“ob”并不是一个标准的二进制数前缀。可能是因为在某些字体或手写...

  • 在Python编程中,当if语句需要同时满足多个条件时,可以灵活运用关系运算符和逻辑运算符来实现。例如,如果要判断变量a是否等于b,同时判断变量x是否等于y,可以使用逻辑运算符and来连接这两个条件。具体来说,可以这样写代码:if a == b and x == y:这行代码的意思是,只有当a等于b并且x等于y时,...

  • :左移动运算符,将二进制位全部左移,高位丢弃,低位补0。 :右移动运算符,将二进制位全部右移,低位丢弃,高位补0。 第六:Python成员运算符 用于判断两个对象的是否存在包括关系,即一个对象中是否包含另外一个对象,其返回结尾为布尔值。成员运算符只有in和not in,即判断指定的值是否在某个对象中,这个对象可以是字...

檬味博客在线解答立即免费咨询

Python相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部