逻辑运算 位运算 集合运算

程序中的所有数在计算机内存中都是以二进制的形式储存的。而位运算就是直接对在内存中的二进制位进行操作。

例如6&2在进行与运算时,6的二进制是0110,11的二进制是1011(运算结果为0010)。


与运算的用处

- 清零

如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。
- 取一个数的指定位

如取数 X=1010 1110 的低4位,找数Y=0000 1111,X&Y=0000 1110即可得到。

- 判断奇偶

a & 1(相当于取二进制整数的最低位),若结果为1,a是奇数;若结果为0,a是偶数。


异或运算的规律

异或运算满足以下运算律:  
1、交换律  
2、结合律 (a^b)^c == a^(b^c)

- 对于任何数x,都有 x^x=0,x^0=x。


或运算、异或运算的用处

- 对一个数据的某些位设置为1

如将数 X=1010 1110 的低4位设置为1,找数Y=0000 1111,X|Y=1010 1111即可得到。

- 翻转指定位

如将数 X=1010 1110 的低4位进行翻转,找数Y=0000 1111,X^Y=1010 0001即可得到。

- 交换两个数

实例:

void Swap(int &a, int &b)
{
    if (a != b)
    {
        a ^= b;
        b ^= a;
        a ^= b;
    }
}

 取反运算的用处


- 使一个数的最低位为零

使a的最低位为0,可以表示为:a & ~1。~1的值为 1111 1110,再按"与"运算,最低位一定为0。因为" ~"运算符的优先级比算术运算符、关系运算符、逻辑运算符和其他运算符都高。

(结果将导致:若a为奇数,a将减1;若a为偶数,a将不变。)


位运算的用处


- 左移运算符(<<)

若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。
- 右移运算符(>>)

操作数每右移一位,相当于该数除以2。


集合运算


见数学必修一课本。额外地:

- 差集运算:即删去元素。如A={1,2,3},B={3,4},则A-B={1,2}。

想了解更多集合知识,可自行百科或参考高中数学《启东奥赛》。上面有详细介绍。

posted @ 2021-11-07 18:14  himekawa  阅读(177)  评论(0编辑  收藏  举报