位运算(与、或、异或、取反) 作者:马育民 • 2023-01-30 15:39 • 阅读:10100 # 解释 假设有以下变量: ``` A = 60 B = 13 ``` 现在以二进制格式表示,如下: ``` A = 0011 1100 B = 0000 1101 ``` # 与 运算 按照二进制位进行运算,只有两个位都是 `1` 的时候结果才是 `1` ,否则是0 运算符:`&` `A&B` 执行过程如下: ``` A = 0011 1100 & B = 0000 1101 结果 = 0000 1100 ``` ### 用途 快速取模算法 保留高 4 位 ### 例子:保留高4位 保留 `30` 的 **高4位(保留左侧4位)**,`30` 的二进制是 `00011110`,与上 `11110000`,执行过程如下: ``` 30的二进制:00011110 &操作 11110000 结果: 00010000 (保留30高4位,即:左侧4位) ``` # 或 运算 按照二进制位进行 **或** 运算,只要有一个是 `1`,结果就是 `1` 运算符:`|` ``` A|B = 0011 1101 ``` # 异或 运算 异或,exclusive OR,缩写成 `XOR` >按照二进制位进行运算 - 如果a、b两个值 **不相同**,异或结果为 **1** - 如果a、b两个值 **相同** ,异或结果为 **0** |a |b |异或结果 | | ------------ | ------------ | ------------ | |0 |0 |0 | |0 |1 |1 | |1 |0 |1 | |1 |1 |0 | 运算符:`^` # 取反运算 取反,很简单,就是 如果是 `0` 就返回 `1`,如果是 `1` 就返回 `0`,是单目运算符 运算符:`~` ``` ~A = 1100 0011 ``` 参考: https://blog.csdn.net/w8y56f/article/details/116402868 https://blog.csdn.net/niitlcj/article/details/77595248 https://www.cnblogs.com/thrillerz/p/4530108.html 原文出处:http://malaoshi.top/show_1IX4sDGM8PRy.html