C语言位运算符:与、或、异或、取反、左移与右移详细介绍
C语言提供了位运算符,用于对二进制位进行操作。本文将详细介绍5种常用的位运算符:与、或、异或、取反、左移与右移。
1. 与运算符(&)
与运算符用&
表示,它对两个操作数的每一位进行比较,只有在两个操作数的对应位均为1时,结果才为1,否则结果为0。
示例1:将一个数的二进制表示中的第n位清零,其余位不变。
unsigned int clearBit(unsigned int num, int n) {
return num & ~(1 << n);
}
此函数将 1 左移 n 位,然后取反,将 num 和结果进行与运算,即可将 num 二进制表示中的第 n 位清零。
2. 或运算符(|)
或运算符用|
表示,它对两个操作数的每一位进行比较,只有在两个操作数的对应位均为0时,结果才为0,否则结果为1。
示例2:将一个数的二进制表示中的第n位改为1,其余位不变。
unsigned int setBit(unsigned int num, int n) {
return num | (1 << n);
}
此函数将 1 左移 n 位,然后与 num 进行或运算,即可将 num 二进制表示中的第 n 位改为1。
3. 异或运算符(^)
异或运算符用^
表示,它对两个操作数的每一位进行比较,只有在两个操作数的对应位不同时,结果才为1,否则结果为0。
示例3:将一个数的二进制表示中的第n位取反,其余位不变。
unsigned int toggleBit(unsigned int num, int n) {
return num ^ (1 << n);
}
此函数将 1 左移 n 位,然后与 num 进行异或运算,即可将 num 二进制表示中的第 n 位取反。
4. 取反运算符(~)
取反运算符用~
表示,它对一个操作数的每一位进行取反操作。
示例4:将一个数的二进制表示中的所有位取反。
unsigned int invertBits(unsigned int num) {
return ~num;
}
此函数对 num 进行取反操作,即可将 num 二进制表示中的所有位取反。
5. 左移运算符(<<)
左移运算符用<<
表示,它将一个操作数的每一位向左移动指定的位数。移走的位被丢弃,右边空出的位用0填充。
示例5:将一个数的二进制表示中的所有位左移n位。
unsigned int leftShift(unsigned int num, int n) {
return num << n;
}
此函数将 num 左移 n 位,左移过程中,只要二进制最左端填充一位0即可。
6. 右移运算符(>>)
右移运算符用>>
表示,它将一个操作数的每一位向右移动指定的位数。移走的位被丢弃,左边空出的位用符号位填充。
示例6:将一个数的二进制表示中的所有位右移n位。
int rightShift(int num, int n) {
return num >> n;
}
此函数将 num 右移 n 位,右移过程中,只要二进制最右端填充符号位即可。
以上就是C语言位运算符的详细介绍,希望能给大家提供帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言位运算符:与、或、异或、取反、左移与右移详细介绍 - Python技术站