与 或 异或 反 左移 右移运算符的用途

1 与运算符的用途

1.1 清零
与一个各位都为零的数值想与,结果为零

123 & 0
// 0

1.2 判断奇偶

123 & 1
// 1
122 & 1
// 0

1.3 取一个数的指定位
比如取数X = 1010 1110 的低4位,只需要找一个数Y,令Y的低四位为1,其余位为0,即Y = 0000 1111

1010 1110 & 0000 1111
//0000 1110

比如取数X = 1010 1110 的第3位,只需要找一个数,令Y的第3位为1,其余位为0,即Y = 0000 0100

1010 1110 & 0000 0100
// 100
1010 1010 & 0000 0100
// 0

2 或运算的用途

2.1 将一个数据的某些位置设置为1
比如将数X = 1010 1110 的低四位 设置为 1,只需要另找一个数Y,令Y的低4位为1,其余位为0,即Y = 0000 1111

1010 1110 | 0000 1111
// 1010 1111

3 异或运算性质

3.1 交换律
3.2 结合律 a ^ b ^ c == a ^ (b ^ c)
3.3 对于任何数,都有 X ^ X = 0 X ^ 0 = X
3.4 自反性 a ^ b ^ b = a ^ 0 = a

4 异或运算的用途

4.1 翻转指定位
比如将数X = 1010 1110 的低4位进行翻转,只需要另外找一个数Y,令Y的低4位为1,其余位为0,即Y = 0000 1111

1010 1110 ^ 0000 1111
// 1010 0001

4.2 与0相异或值不变

5 取反运算符

取反运算符的优先级大于 算数运算符、关系运算符、逻辑运算符
5.1 使X的最低为为0

X & ~1
// ~1 的值为 1111 1111 1111 1110

6 左移运算符

将一个数的各二进制位全部左移若干位,左边的二进制舍弃,右边补0
若左移时舍弃的高位不包括1,则每左移1位相当于该数乘二

7 右移运算符

将一个数的各二进制位全部右移若干位,右边的二进制舍弃,左边正数补0,负数补1
每右移1位相当于该数除二

8 不同长度的数据进行位运算,系统会将二者右对齐后,进行位运算

左边不足的位依次补
8.1 整型数据为正数,左边补0
8.2 整型数据为负数,左边补1
8.3 整型数据为无符号数,左边补0

猜你喜欢

转载自blog.csdn.net/weixin_43915401/article/details/110084045