C语言中位运算符有哪些用法?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2234个文字,预计阅读时间需要9分钟。
针对更多紧凑数据,程序可以使用独立的位或多个组合位来存储信息。文件访问许可是一个常见的应用场景。位运算符允许对单个字节或更大的数据单元进行独立位处理:
整数类型的位模式由一队按位置从右到左编号的位组成,位置编号从 0 开始,这是最低有效位(least significant bit)。例如,考虑字符值'*',它的 ASCII 编码为 42,相当于二进制的 101010:
位模式 0 0 1 0 1 0 1 0
位位置 7 6 5 4 3 2 1 0
在本例中,值 101010 被表示成一个 8 位的字节内容,因此前面多两个 0。
布尔位运算符
表 1 中列举的运算符可以对操作数的每个位进行布尔运算。这种二元运算符把两个不同操作数内相同位置的位关联起来。被设定的位(也就是值为 1 的位)被解释为 true,被清除的位(也就是值为 0 的位)被解释为 false。除布尔运算符 AND、OR 和 NOT 以外,也有位异或运算符(exclusive-OR,XOR)。这些都在表 1 进行了列举。
本文共计2234个文字,预计阅读时间需要9分钟。
针对更多紧凑数据,程序可以使用独立的位或多个组合位来存储信息。文件访问许可是一个常见的应用场景。位运算符允许对单个字节或更大的数据单元进行独立位处理:
整数类型的位模式由一队按位置从右到左编号的位组成,位置编号从 0 开始,这是最低有效位(least significant bit)。例如,考虑字符值'*',它的 ASCII 编码为 42,相当于二进制的 101010:
位模式 0 0 1 0 1 0 1 0
位位置 7 6 5 4 3 2 1 0
在本例中,值 101010 被表示成一个 8 位的字节内容,因此前面多两个 0。
布尔位运算符
表 1 中列举的运算符可以对操作数的每个位进行布尔运算。这种二元运算符把两个不同操作数内相同位置的位关联起来。被设定的位(也就是值为 1 的位)被解释为 true,被清除的位(也就是值为 0 的位)被解释为 false。除布尔运算符 AND、OR 和 NOT 以外,也有位异或运算符(exclusive-OR,XOR)。这些都在表 1 进行了列举。

