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

打印 上一主题 下一主题

主题 907|帖子 907|积分 2731

前言

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

一、人物简介


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


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

二、将两个字节合并成一个16位整数
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     unsigned char lowByte = 0x12;   // 0001 0010
  5.     unsigned char highByte = 0x34;  // 0011 0100
  6.     unsigned short result = (highByte << 8) | lowByte;  // 0011 0100 0001 0010
  7.     printf("合并结果为 %04x\n", result);       // 输出: 0x3412
  8.     return 0;
  9. }
复制代码

四、将一个字节中的某些位置1
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     unsigned char data = 0xab;   // 1010 1011
  5.     data = (data << 4) | (data >> 4);  // 1011 1010
  6.     printf("交换结果为 %02x\n", data);      // 输出:0xba
  7.     return 0;
  8. }
复制代码

五、将一个字节中的某些位置0
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int x;
  5.     printf("请输入一个数:");
  6.     scanf("%d", &x);
  7.     printf("\n第4位置1后,这个数变为 %d\n", x | 0b1000);
  8.     return 0;
  9. }
复制代码

六、将低位连续的0变为1
  1. #include <stdio.h>
  2. int main() {
  3.     int x;
  4.     int a = 0b1000;
  5.     printf("请输入一个数:");
  6.     scanf("%d", &x);
  7.     printf("\n第4位置0后,这个数变为 %d\n", (x | a) - a );
  8.     return 0;
  9. }
复制代码


小结

通过这篇文章,我们学会了用位运算符|的5种高级用法
​        1、将两个字节合并成一个16位整数
​        2、将一个字节的低4位和高4位交换
​        3、将一个字节中的某些位置1
​        4、将一个字节中的某些位置0
​        5、将低位连续的0变为1
在下一篇文章中,我们将介绍位运算符^的一些高级用法。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

泉缘泉

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表