用python的位运算来判断数值的奇偶性

2019年11月5日 / 5次阅读 / Last Modified 2019年11月5日
数值计算

我们在python中,判断一个数是奇数还是偶数,通常的做法就是让这个数做模2运算(用%符号),检查结果是否为0,是0就是偶数,不是0就是奇数。这个方法是没错的,代码如下:

>>> 123 % 2
1
>>> 124 % 2
0
>>> -123 % 2
1
>>> -124 % 2
0

关于python的模运算的详细介绍

除了使用模2运算来判断数据的奇偶性,还可以使用python的位运算位运算的一大优点,就是效率高,特别是在脚本语言中!

使用位运算判断数值的奇偶性,只需要对这个数进行 & 1(与 1)操作,1的二进制码在计算机中是0b00000001(如果使用bin函数,你得到的二进制字符串是0b1),只有最后一个bit是1,与数据进行与操作,如果得到的结果是1,就是奇数,得到的结果是0,就是偶数。代码如下:

>>> 123 & 1
1
>>> 124 & 1
0
>>> -123 & 1
1
>>> -124 & 1
0

推荐使用python的位运算来做数值的奇偶行判断,除了代码执行效率高,代码在阅读的时候,也显得更专业更高大上!

-- EOF --

本文链接:https://www.pynote.net/archives/1454

留言区

《用python的位运算来判断数值的奇偶性》有1条留言

电子邮件地址不会被公开。 必填项已用*标注

  • 麦新杰

    实测结果,两种判断数值奇偶性的方法,性能差不多:

    C:\Users\xinli>python -m timeit "123 % 2"
    50000000 loops, best of 5: 6.47 nsec per loop
    
    C:\Users\xinli>python -m timeit "123 & 2"
    50000000 loops, best of 5: 6.46 nsec per loop
    
    C:\Users\xinli>python -m timeit "123456789 % 2"
    50000000 loops, best of 5: 6.46 nsec per loop
    
    C:\Users\xinli>python -m timeit "123456789 & 2"
    50000000 loops, best of 5: 6.47 nsec per loop
     [回复]


前一篇:
后一篇:

More

麦新杰的Python笔记

Ctrl+D 收藏本页


©Copyright 麦新杰 Since 2019 Python笔记

go to top