C 语言按位运算符

C 标准库
C 语言按位运算符
在本教程中,您将通过示例了解C语言编程中所有6个按位运算符。
在算术逻辑单元(位于CPU内)中,诸如位加法,减法,乘法和除法之类的数学运算是在位级别完成的。 要在C编程中执行位级运算,请使用按位运算符。
运算符运算符的含义&&按位与|按位或^按位异或~按位补<<左移位>>右移位按位与运算符&如果两个操作数的对应位为1,则按位与的输出为1。如果一个操作数的任一位为0,则对应位的结果为0。
让我们假设两个整数12和25的按位与运算。
12 = 00001100(二进制)
25 = 00011001(二进制)
12和25的位运算
00001100
&00011001
________
00001000 = 8(十进制)范例1:按位与#include
int main()
{
int a = 12, b = 25;
printf("Output = %d", a&b);
return 0;
}输出结果
Output = 8按位或运算符|如果两个操作数的至少一个对应位为1,则按位OR的输出为1。在C编程中,按|表示按位OR运算符。
12 = 00001100(二进制)
25 = 00011001(二进制)
12和25的按位或运算
00001100
| 00011001
________
00011101 = 29(十进制)范例2:按位或#include
int main()
{
int a = 12, b = 25;
printf("Output = %d", a|b);
return 0;
}输出结果
Output = 29按位XOR(异或)运算符^如果两个操作数的对应位相反,则按位XOR运算符的结果为1。用^表示。
12 = 00001100(二进制)
25 = 00011001(二进制)
12和25的按位XOR运算
00001100
^ 00011001
________
00010101 = 21(十进制)例3:按位XOR#include
int main()
{
int a = 12, b = 25;
printf("Output = %d", a^b);
return 0;
}输出结果
Output = 21按位补运算符〜按位补运算符是一元运算符(仅在一个操作数上起作用)。 它将1更改为0,将0更改为1。用~表示。
35 = 00100011(二进制)
35的按位补码运算
〜00100011
________
11011100 = 220(十进制)范例4:按位补示例#include
int main()
{
printf("Output = %d\n",~35);
printf("Output = %d\n",~-12);
return 0;
}输出结果
Output = -36
Output = 11C语言编程中的移位运算符C语言编程中有两个移位运算符:
右移运算符
左移运算符。
右移运算符右移运算符将所有位向右移位指定数量的指定位。用>>表示。
212 = 11010100(二进制)
212 >> 2 = 00110101(二进制)[右移两位]
212 >> 7 = 00000001(二进制)
212 >> 8 = 00000000
212 >> 0 = 11010100(无移位)左移运算符左移运算符将所有位向左移特定数量的指定位。用<<表示。
212 = 11010100(二进制)
212 << 1 = 110101000(二进制)[左移一位]
212 << 0 = 11010100(移位0)
212 << 4 = 110101000000(二进制)= 3392(十进制)示例#5:移位运算符#include
int main()
{
int num=212, i;
for (i=0; i<=2; ++i)
printf("右移 %d: %d\n", i, num>>i);
printf("\n");
for (i=0; i<=2; ++i)
printf("左移 %d: %d\n", i, num<
return 0;
}输出结果:
右移 0: 212
右移 1: 106
右移 2: 53
左移 0: 212
左移 1: 424
左移 2: 848C 标准库