> 文章列表 > 逍遥自在学C语言 位运算符 “|“ 的5种高级用法

逍遥自在学C语言 位运算符 “|“ 的5种高级用法

逍遥自在学C语言 位运算符 “|“ 的5种高级用法

前言

在上一篇文章中,我们介绍了&运算符的高级用法,本篇文章,我们将介绍| 运算符的一些高级用法。

逍遥自在学C语言 位运算符 “|“ 的5种高级用法

一、人物简介

  • 第一位闪亮登场,有请今后会一直教我们C语言的老师 —— 自在。

逍遥自在学C语言 位运算符 “|“ 的5种高级用法

  • 第二位上场的是和我们一起学习的小白程序猿 —— 逍遥。

逍遥自在学C语言 位运算符 “|“ 的5种高级用法

二、将两个字节合并成一个16位整数

#include <stdio.h>int main() 
{unsigned char lowByte = 0x12;   // 0001 0010unsigned char highByte = 0x34;  // 0011 0100unsigned short result = (highByte << 8) | lowByte;  // 0011 0100 0001 0010printf("合并结果为 %04x\\n", result);       // 输出: 0x3412return 0;
}

逍遥自在学C语言 位运算符 “|“ 的5种高级用法

三、将一个字节的低4位和高4位交换

#include <stdio.h>int main() 
{unsigned char data = 0xab;   // 1010 1011data = (data << 4) | (data >> 4);  // 1011 1010printf("交换结果为 %02x\\n", data);      // 输出:0xbareturn 0;
}

逍遥自在学C语言 位运算符 “|“ 的5种高级用法

四、将一个字节中的某些位置1

#include <stdio.h>
int main() 
{int x;printf("请输入一个数:");scanf("%d", &x);printf("\\n第4位置1后,这个数变为 %d\\n", x | 0b1000); return 0;
}

逍遥自在学C语言 位运算符 “|“ 的5种高级用法

五、将一个字节中的某些位置0

#include <stdio.h>
int main() {int x;int a = 0b1000; printf("请输入一个数:");scanf("%d", &x);printf("\\n第4位置0后,这个数变为 %d\\n", (x | a) - a ); return 0;
}

逍遥自在学C语言 位运算符 “|“ 的5种高级用法

六、将低位连续的0变为1

#include <stdio.h>
int main() 
{int x;printf("请输入一个数:");scanf("%d", &x);printf("\\n低位连续的0变为1,这个数变为%d\\n", x | (x-1) );return 0;
}

逍遥自在学C语言 位运算符 “|“ 的5种高级用法
逍遥自在学C语言 位运算符 “|“ 的5种高级用法

小结

通过这篇文章,我们学会了用位运算符|的5种高级用法

  1、将两个字节合并成一个16位整数2、将一个字节的低4位和高4位交换3、将一个字节中的某些位置14、将一个字节中的某些位置05、将低位连续的0变为1

在下一篇文章中,我们将介绍位运算符^的一些高级用法。

📢欢迎各位 👍点赞 ⭐收藏 📝评论,如有错误请留言指正,非常感谢!