C# 几个基础位运算

devtools/2024/11/8 21:06:41/

通过使用二进制位(bit)来做开关,是个不错的选择。

使用二进制作为开关,主要是针对不同的位进行赋值 1或者 0

在实现这个功能之前,先来复习几个知识点:

  1. 位逻辑非运算(~):1变0,0变1

  2. 逻辑与运算(&):位逻辑与运算将两个运算对象按位进行与运算。0&0=0,0&1=0,1&0=0,1&1=1.

  3. 逻辑或运算(|):位逻辑或运算将两个运算对象按位进行与运算 0|0=0,0|1=1,1|0=1,1|1=1。

现在我们来使用他们实现位开关:

public class BitOperator{/// <summary>/// 设置指定位的值/// </summary>/// <param name="flag">标志数</param>/// <param name="index">从低到高位的索引值</param>/// <param name="onOff">1 true 或 0 false</param>/// <returns></returns>/// <exception cref="ArgumentOutOfRangeException"></exception>public static int SetFlag(int flag, int index, bool onOff){if (onOff){return flag | (1 << index);}else{return flag & ~(1 << index);}}/// <summary>/// 获取指定位的值/// </summary>/// <param name="flag">标志数</param>/// <param name="index">从低到高位的索引值</param>/// <returns></returns>/// <exception cref="ArgumentOutOfRangeException"></exception>public static bool GetFlagBitValue(int flag, int index){return (flag & (1 << index)) != 0;}}

以上就是完整代码,要用来做一些开关的功能还是非常实用的。虽然现在内存比较大,可能都很少用这种方式。但是用它来判断全关还是非常方便的。


http://www.ppmy.cn/devtools/132393.html

相关文章

传统RAG流程;密集检索器,稀疏检索器:中文的M3E

目录 传统RAG流程 相似性搜索中:神经网络的密集检索器,稀疏检索器 密集检索器 BGE系列模型 text-embedding-ada-002模型 M3E模型 稀疏检索器 示例一:基于TF-IDF的稀疏检索器 示例二:基于BM25的稀疏检索器 稀疏检索器的特点与优势 传统RAG流程 相似性搜索中:神经…

ICT网络赛道安全考点知识总结3

关于SSL VPN的特点的描述如下&#xff1a; 由于SSL VPN登录方式借助了浏览器&#xff0c;所以实现了客户端的自动安装和配置&#xff0c;这样用户可以随时随地用设备快捷登录&#xff0c;同时也缓解了网络管理员维护客户端等方面的压力。 SSL VPN针对内网资源可以解析到应用层&…

MySQL 【流程控制】函数

目录 1、CASE 语句用于流程控制中的多分支情况。 2、IF() 函数根据测试条件是否为真分别返回指定的值。 3、IFNULL() 函数&#xff0c;如果第一个参数为 NULL&#xff0c;返回第二个参数&#xff0c;否则返回第一个参数。 4、NULLIF() 函数根据两个参数是否相等决定返回 NUL…

数字身份发展趋势前瞻:身份韧性与安全

身份韧性与安全是身份与访问管理IAM发展的重要趋势&#xff0c;身份既是防御者的盾牌&#xff0c;也是攻击者的目标。面对日益复杂的网络威胁和不断增长的身份盗窃风险&#xff0c;身份韧性与安全不仅仅涉及产品的防御能力&#xff0c;还包括应对突发事件、快速恢复的弹性和灵活…

C语言模拟题[一]

一 、选择题 (每小题 2分,共 sO分) 1.以下对 C语言函数的描述中,正确的是 ( )。 A.C程序由一个或一个以上的函数组成 B.函 数既可以嵌套定义又可以递归调用 C,函数中一定要有 retum语句 D。 主函数中调用的所有函数必须放在同一个文件中 2.把数组作为函数参数传递,以 下描述…

大数据分析案例-基于随机森林算法的智能手机价格预测模型

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

一招解决Mac没有剪切板历史记录的问题

使用Mac的朋友肯定都为Mac的剪切功能苦恼过&#xff0c;旧内容覆盖新内容&#xff0c;导致如果有内容需要重复输入的话&#xff0c;就需要一次一次的重复复制粘贴&#xff0c;非常麻烦 但其实Mac也能够有剪切板历史记录功能&#xff0c;iCopy&#xff0c;让你的Mac也能拥有剪切…

linux dpkg 查看 安装 卸载 .deb

1、安装 sudo dpkg -i google-chrome-stable.deb # 如果您在安装过程中或安装和启动程序后遇到任何依赖项错误&#xff0c; # 您可以使用以下apt 命令使用-f标志解析​​和安装依赖项&#xff0c;该标志告诉程序修复损坏的依赖项。 # -y 表示自动回答“yes”&#xff0c;在安装…