位运算

作者: yatttto | 来源:发表于2017-03-13 16:10 被阅读0次

    参考:位运算技巧

    位运算的使用

    1.and运算
    and运算通常用于二进制取位操作,例如一个数and1的结果就是取二进制的最末位。
    2.or运算
    or运算通常用于二进制特定位上的无条件赋值,例如一个数or1的结果就是把二进制最末位强行变成1.如果需要把二进制最末位变成0,对这个数or1之后再减1就可以了,实际意义就是把这个数强行变成最接近的偶数。
    3.xor运算
    xor 的意思就是 "是不是不一样"。
    这个算是我自己遇到比较多的一种位操作,Leetcode中遇到通过位操作取巧来解决的题目还是比较多的。xor运算通常对二进制的特定一位进行取反操作。
    这里是今天学习到的:xor运算的逆运算是其本身,即(a xor b)xor b =a。xor可以用于简单的加密,告知对方一次加密的值,以及其中一个a(b),我们可以得到b(a)。
    而且xor可以用于交换两个数的值。在python中:

     a,b
    (3, 5)
    >>> a = a^b
    >>> b = a^b
    >>> a = a^b
    >>> a,b
    (5, 3)
    

    4.not运算
    not的定义为全部取反。
    5.shl运算
    a shl b表示a转为二进制后左移b位(在后面加上b个0)。实际上,左移b位其实就是相当于a×2^b。而在底层运算中,左移操作也比内置的运算速度要快的多。

    >>> 4 << 2
    16
    >>> 2 <<2
    8
    
    

    6.shr运算
    a shr b也就是将其转为二进制后右移b位,等于a/(2^b),

    相关文章

      网友评论

          本文标题:位运算

          本文链接:https://www.haomeiwen.com/subject/xvzfnttx.html