📜  C |功能|问题8(1)

📅  最后修改于: 2023-12-03 15:29:43.457000             🧑  作者: Mango

C语言中的位运算

C语言中的位运算是计算机系统中基础的一部分,在系统内存和栈内存中,存储的都是二进制的0和1。因此,用位运算来操作这些数据,具有高效、简便的特点,是程序员必须掌握的一种技能。

按位与&

按位与运算符&将会把两个操作数的二进制数相同的为1的位数,即将这些位上数值保留下来,其它地方都用0来填充。

下面是按位与运算的代码片段:

int a = 5; // 二进制:0000 0101
int b = 3; // 二进制:0000 0011
int c;
c = a & b; // 二进制:0000 0001
按位或|

按位或运算符|将会把两个操作数的二进制数相同的为0的位数,即将这些位上数值保留下来,其它地方都用1来填充。

下面是按位或运算的代码片段:

int a = 5; // 二进制:0000 0101
int b = 3; // 二进制:0000 0011
int c;
c = a | b; // 二进制:0000 0111
按位异或^

按位异或运算符^将会把两个操作数的二进制数相同的为0的位数,即将这些位上数值保留下来,其它地方都用1来填充。

下面是按位异或运算的代码片段:

int a = 5; // 二进制:0000 0101
int b = 3; // 二进制:0000 0011
int c;
c = a ^ b; // 二进制:0000 0110
按位取反~

按位取反运算符~将会把操作数的二进制数每一位都取反,即其中的0变成了1,1变成了0。

下面是按位取反运算的代码片段:

int a = 5; // 二进制:0000 0101
int c;
c = ~a; // 二进制:1111 1010
左移<<

左移运算符<<将会把一个数的二进制数,向左移动指定的位数,右侧用0来填充。

下面是左移运算的代码片段:

int a = 5; // 二进制:0000 0101
int c;
c = a << 2; // 二进制:0001 0100
右移>>

右移运算符>>将会把一个数的二进制数,向右移动指定的位数,左侧用0或者1来填充,取决于它是有符号数还是无符号数。

下面是右移运算的代码片段:

int a = 5; // 二进制:0000 0101
int c;
c = a >> 2; // 二进制:0000 0001

以上就是C语言中的位运算符的介绍和示例代码,需要注意的是,这些运算符的效率非常高,尤其是在一些跟底层硬件交互的场景中,一定要注意出现的问题。