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


    前言

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

    一、人物简介

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

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

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

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

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

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

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

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

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

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

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

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


    小结

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

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

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

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

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

    ​ 5、将低位连续的0变为1

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

  • 相关阅读:
    “自主可控”的正确姿势—自主可控交换机的机遇与挑战
    java程序jar包xjar加密及破解解密
    Transformer合集3
    ECA-Net:深度卷积神经网络的高效通道注意力
    【Pytorch with fastai】第 20 章 :结语与问题
    阅读架构课程随想
    并查集(Union-Find)
    【后量子密码】CRYSTALS-KYBER 算法(二):密钥封装 KEM(附源码分析)
    SpringCloud和SpringCloudAlibaba的区别
    leetcode mysql 626. 换座位
  • 原文地址:https://www.cnblogs.com/Wayne123/p/17308307.html