[C]C语言编码:& | ~操作

C语言编码:& | ~操作
方法:

  • 1:用于取特定位置上的几个位的数据,比如 bbb & 0x3FFF,就是后14位上面的数据(高两位为0),这个算法保证数据准确性,防止数据异常方面比较有效的,用于取某一个特定位上面的数据这个方法比Memset的方式要好,所以一般memset只是用来整体赋值,而这个是用来进行部分的字节中的位的获取的;
  • 2:& + ~的组合操作:任何数和他的反进行与,结果一定全为0,所以是清空操作。这个用于清空标记位,还是很常用的,通常还可以用于一组标志比特位的变量,(假设一个位=一个要做的任务),如果任务完成了,要清除对应的位,则可以用这种方式清除,即部分清空的功能;用& ~方式标记、清空标记的好处是在不增加位数的情况下,可以标记多个变量,同时,可以保留上一个变量的值一直延续,类似于一个迷你状态机。通常使用这种方式一大好处就是可以节省空间,同时也不增加其他什么的性能消耗;
  • 3:|一般用于置标记,或者两个变量的前后连接,但是置标记的时候,必须确保原来是0;
  • 4:|还可以用于判断某一个位置上面是否有数值,比如10111111,就是判断第7位是否为0;
  • 5:用于做选择题目,一道题目有很多选项可以用&进行连接,判断当前选择是不是处于选项之中可以用|,大大节省判断成本;
  • 6:特殊的置标志位的方法:首先按照普通的枚举的形式定义(从0开始),然后,通过一个宏将UINT32 0x0001分别左移n位的方式,每个枚举变量就变成了一个唯一的标志位了。是一种比较不错的算法。 当然或的算法不够简单,也不够安全,除非必须,否则尽量少用。这种方式和枚举结合,可读性不错;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值