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