zoukankan      html  css  js  c++  java
  • python中的按位与 +按位或+ 按位反+异或运算 +左移+右移

    1. 按位与

           按位与是针对二进制数的操作,指将两个二进制数的每一位都进行比较,如果两个相应的二进位都为 1 则此位为 1,否则为 0。在本例中, 5 的二进制表达为 101 , 3 的二进制表达为 11 (为补全位数进行按位操作写作 011 ),则按位与操作后的结果为001 ,对应的十进制数为 1 。 

    详细: 3 & 5 —— 00000011 & 00000101 = 0000 0001 即为 1

    2. 按位或

           按位或是针对二进制数的操作,指将两个二进制数的每一位都进行比较,如果两个相应的二进位有一个为 1 则此位为 1,否则为 0。在本例中, 101 与 011 进行按位或操作后的结果为 111 ,对应十进制数为 7 。 

    详细:3 | 5 —— 00000011 | 0000 0101 = 0000 0111 即为7

    3. 按位异或

           按位异或是针对二进制数的操作,指将两个二进制数的每一位都进行比较,如果两个相应的二进位不同则此位为 1,相同为 0。在本例中, 101 与 011 进行按位异或操作的结果为 110 ,对应十进制数为 6 。 

    详细例子:


    a = 10

    b = 100

    a = a^b # a = 110

    b = b^a # b = 10

    a = a^b # a = 100
    解释:(此处的例子证明a b 经过三次异或操作之后,可以实现两者的数值的交换)

    a的二进制  1010   b的二进制  1100100

    a    : 0 0 0 1 0 1 0

    b    : 1 1 0 0 1 0 0

    a^b: 1 1 0 1 1 1 0  ----> 110  (异或:相等为0,不等为1)

    b    : 1 1 0 0 1 0 0

    b^a: 0 0 0 1 0 1 0  ---->10

    a    :  1 1 0 1 1 1 0

    a^b: 1 1 0 0 1 0 0  ---->100

    4. 按位取反

            按位取反也称作“按位取非”或“求非”或“取反”,沈洁元译本译作“按位翻转”,是针对二进制数的操作,指将两个二进制数的每一二进位都进行取反操作, 0 换成 1 , 1 换成0 。只需按照给出的公式记忆 ~6 = -(x+1)=-7

    详细:~6 = -(x+1)=-7

    5. 左移

    左移(<<)(由<<右侧的数字决定左移几位,高位丢弃,低位补0)

    eg:print(2<<2) 返回8=1000

    6. 右移

     右移(>>)(由<<右侧的数字决定右移几位,高位丢弃,低位补0)

    eg:print(13>>2) 返回3=011

  • 相关阅读:
    4、2 核心组件
    promise
    Content-Type
    $routeProvider
    广告
    $apply() $digest()
    异常
    switch
    autoprefixer
    $resource
  • 原文地址:https://www.cnblogs.com/Leon27-29/p/12072522.html
Copyright © 2011-2022 走看看