C语言中位运算符"|"的5种高级用法总结

 更新时间:2023年04月12日 08:29:00   作者:知微之见  
这篇文章主要为大家详细介绍了C语言中位运算符"|"的5种高级用法,文中的示例代码讲解详细,具有一定的参考价值,需要的可以参考一下

前言

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

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

#include <stdio.h>

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 <stdio.h>

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

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

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

四、将一个字节中的某些位置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;
}

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

#include <stdio.h>
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

到此这篇关于C语言中位运算符"|"的5种高级用法总结的文章就介绍到这了,更多相关C语言位运算符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++实现飞机订票系统

    C++实现飞机订票系统

    这篇文章主要为大家详细介绍了C++实现飞机订票系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • 四叉树有损位图压缩处理程序示例

    四叉树有损位图压缩处理程序示例

    这篇文章主要介绍了四叉树有损位图压缩处理程序示例,可以对24位图进行压缩,应用于windows平台,需要的朋友可以参考下
    2014-04-04
  • Qt自定义控件实现仪表盘

    Qt自定义控件实现仪表盘

    这篇文章主要为大家详细介绍了Qt如何自定义控件实现仪表盘,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • 浅析C语言中对于char*和char[]的理解

    浅析C语言中对于char*和char[]的理解

    char * s 只是一个保存字符串首地址的指针变量,char a[]是许多连续的内存单元,单元中的元素是char型,char * 和 char a[]具有相同的效果,源于字符串的本质,这篇文章主要介绍了C语言中对于char*和char[]的理解,需要的朋友可以参考下
    2023-02-02
  • VC++的if语句应用范围分析

    VC++的if语句应用范围分析

    这篇文章主要介绍了VC++的if语句应用范围分析,对VC++初学者有很好的参考学习价值,需要的朋友可以参考下
    2014-08-08
  • Qt实现网易云音乐进度条效果

    Qt实现网易云音乐进度条效果

    这篇文章主要为大家详细介绍了Qt实现网易云音乐进度条效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • 详解C++虚函数中多态性的实现原理

    详解C++虚函数中多态性的实现原理

    C++是一种面向对象的编程语言,在C++中,虚函数是实现多态性的关键。本文就来探讨一下C++虚函数中多态性的实现原理及其在面向对象编程中的应用吧
    2023-05-05
  • C语言堆结构处理TopK问题详解

    C语言堆结构处理TopK问题详解

    TopK问题即在N个数中找出最大的前K个,这篇文章将详细讲解如何利用小根堆的方法解决TopK问题,文中代码具有一定参考价值,快跟随小编一起学习一下吧
    2022-06-06
  • C++浅析数据在内存中如何存储

    C++浅析数据在内存中如何存储

    使用编程语言进行编程时,需要用到各种变量来存储各种信息。变量保留的是它所存储的值的内存位置。这意味着,当您创建一个变量时,就会在内存中保留一些空间。您可能需要存储各种数据类型的信息,操作系统会根据变量的数据类型,来分配内存和决定在保留内存中存储什么
    2022-08-08
  • C++ 单例模式两种实现方式

    C++ 单例模式两种实现方式

    文章介绍了单例模式的两种实现方式:饿汉模式和饱汉模式(懒汉模式),并对比了它们的特性、线程安全、资源占用、启动速度、实现复杂度和性能开销,文章还提供了代码示例和适用场景建议,感兴趣的朋友跟随小编一起看看吧
    2026-01-01

最新评论