• C++中位运算符异或 ^、&、|


    & :只有2个都为1,那么结果是1,否则为0;例如:1&1=1,1&0=0,0&0=0,0&1=0;

    11 & 3 = 3

       00001011
    &  00000011
    =  00000011 = 3

    | :只要有一个是1,那么结果为1,否则为0;例如:1&1=1,1&0=1,0&0=0,0&1=1;

    11 | 3 = 11

       00001011
    |  00000011
    =  00001011 = 11

    >> :向右位移,就是把尾数去掉位数,例如:153 >> 2,153的二进制是:10011001,屁股后面去掉 2 位 100110,100110 转化成十进制就是 38,153 = 10011001,38 =100110,"01" 去掉了。

    << :向左位移,就是把开头两位数去掉,尾数加位数00,例如:

    107 = 0110 1011 <<2
    <<
    172 = 1010 1100

    在计算机中由于是32位的

    107 = 0000 0000   0000 0000   0000 0000   0110 1011 <<2
    <<
    428 = 0000 0000   0000 0000   0000 0001   1010 1100

    ^ :两个相同的数会变成0,反之是1,例如:1&1=0,1&0=1,0&0=0,0&1=1;

    11^3 = 8

       00001011
    ^  00000011
    =  00001000 = 8

    任何数异或 ^0 得到的值不变:

    a^0 = a

    任何数异或同一个数两次得到的值不变:

    a^b^b = a
  • 相关阅读:
    luogu P3801 红色的幻想乡
    [USACO07OPEN]吃饭Dining
    [SCOI2007]蜥蜴
    [SDOI2011]染色
    [USACO07DEC]Sightseeing Cows
    [HNOI2007]紧急疏散EVACUATE
    [ZJOI2009]假期的宿舍
    [SDOI2013]费用流
    [CQOI2009]跳舞
    使用chrony安装chrony
  • 原文地址:https://www.cnblogs.com/gkh-whu/p/11478300.html
Copyright © 2020-2023  润新知