HZ.Jun +

【C语言】按位运算简单应用小结

1.提取信息

用于取特定位置上的几个位的数据。如 bbb & 0x3FFF,就是获取后14位上面的数据(高两位为0)。这个方法可保证数据准确性,防止数据异常。
也可用于取某一个特定位上面的数据这个方法比memset的方式要好,所以一般memset只是用来整体赋值,而这个是用来进行部分的字节中的位的获取与赋值。

2.置标志或清空标志

& + ~的组合操作:任何数和他的反进行与,结果一定全为0,所以可作为清空操作。
通常还可以用于清空部分标志信息。假设一个位表示一个要做的任务,如果任务完成了,要清除对应的位,则可以用这种方式清除:即部分清空的功能。
用& ~方式标记、清空标记的好处是在不增加位数的情况下,可以标记多个变量。同时,可以保留上一个变量的值一直延续,类似于一个迷你状态机。通常使用这种方式一大好处是可以节省空间,同时也不增加其他 性能消耗。

3.判断某一个位上是否有数值

|可以用于判断某一个位置上面是否有数值,比如10111111,就是判断第7位是否为0。 |一般用于置标记,或者两个变量的前后连接,但是置标记的时候,必须确保原来是0。

4.用于记录选择的选项

用于做选择题目,一道题目有很多选项可以用&进行连接,判断当前选择是不是处于选项之中可以用&。

5.通过左移将枚举转换成特殊标志位

获取特殊的置标志位方法:首先按照普通的枚举的形式定义(从0开始),然后,通过一个宏将UINT32 0x0001分别左移n位的方式,每个枚举变量就变成一个唯一的标志位了。 这种和枚举结合的方式,可读性不错。

欢迎转载 如有话要说请在下方留言~ 谢谢!^ ^
HZJun []

Blog

Opinion

Project