Loading

Chat Bot

    利用位运算加速计算

    整除2与模2

    x: int = 123
    # 整除2:
    x = x>>1
    # 模2: 
    x = x&1
    

    x&(x−1) (Brian Kernighan 算法)

    对于任意整数x: int,令 x = x&(x−1),该运算将x的二进制表示的最后一个1变成0.
    用处:

    1. 计算整数的二进制表示中有多少个1

    x&(-x)

    -x的运算对应的二进制操作是: 所有位置取反+1
    对于x: int, x&(-x)的作用是得到x的二进制表示中最低位的1及其后面的0. 比如, 如果x=12,那么它的二进制表示是00001100,那么x&(-x)就是00000100.
    用处:

    1. 判断整数数是否为2的幂
    2. 计算整数数的最大的2的幂的因数

    未完待续...

    posted @ 2023-03-16 10:29  ㅤJJVVㅤ  阅读(16)  评论(0编辑  收藏  举报