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

yizhihongxing

前言

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

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

一、人物简介

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

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

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

逍遥自在学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;
}

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

三、将一个字节的低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;
}

逍遥自在学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、将一个字节中的某些位置1

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

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

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

原文链接:https://www.cnblogs.com/Wayne123/p/17308307.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:逍遥自在学C语言 位运算符 “|” 的5种高级用法 - Python技术站

(0)
上一篇 2023年4月17日
下一篇 2023年4月17日

相关文章

  • C 程序 检查阿姆斯特朗数

    C程序检查阿姆斯特朗数是一个用C语言编写的程序,用于判断一个给定数字是否为阿姆斯特朗数。以下是该程序的完整使用攻略。 1. 编译程序 首先,将程序保存为一个 .c 文件。然后,打开一个命令行终端,进入该文件所在的目录,并使用C编译器将程序编译成可执行文件。假设我们将程序保存为 armstrong.c 文件,则可以使用以下命令来编译该程序: gcc -o ar…

    C 2023年5月9日
    00
  • 使用C语言访问51单片机中存储器的核心代码

    让我来为您详细讲解如何使用C语言访问51单片机中存储器的核心代码的完整攻略。 1. 了解51单片机存储器 在51单片机中,存储器分为RAM和ROM两种类型,其中RAM用于临时存储数据,而ROM则用于存储程序及常量等固化数据。访问51单片机中的存储器需要使用C语言提供的指针功能,通过指向特定地址的指针进行读写操作。 2. 访问RAM 访问RAM很简单,只需要使…

    C 2023年5月24日
    00
  • C++统计软件使用时间代码示例

    首先,需要明确目标:我们要编写一段C++代码,用于统计软件的使用时间,以便开发者了解用户对软件的使用情况,可以做出相应的优化和改进。 下面是编写该代码的具体攻略: 1. 确定计时方式 在编写统计软件使用时间的代码之前,需要确定计时方式。有三种常见的方式: 使用系统时间:利用系统提供的时间函数,记录软件的启动和关闭时间,用二者之差来计算使用时间。 使用计时器:…

    C 2023年5月23日
    00
  • C++中的编译与链接

    C++中的编译与链接是将源代码转换为可执行文件的过程。它分为三个阶段:预处理、编译和链接。 预处理 预处理是C++编译过程的第一个阶段,该阶段将源文件中的预处理指令处理为有效的C++代码。 预处理器在编译之前会检查源文件并执行以下操作: 处理所有以 “#” 开头的预处理指令。 删除所有注释(// 和 / /)。 将所有 #include 指令替换为相应头文件…

    C 2023年5月23日
    00
  • C/C++新建注册表项的代码示例

    下面我来给你详细讲解如何在C/C++中创建和修改Windows系统的注册表项。 首先,可以使用WinAPI提供的Registry相关函数来实现对注册表项进行增删改查操作。需要注意的是,这些函数在使用时需要管理员权限。 新建注册表项 要新建一个注册表项,可以使用RegCreateKeyEx函数。该函数有以下几个参数: HKEY hKey:表示注册表项的父节点。…

    C 2023年5月24日
    00
  • C语言实现逆波兰式实例

    C语言实现逆波兰式实例 逆波兰式是一种数学表达式表示法,也称为后缀表达式。与常见的表达式表示法不同,逆波兰式将操作数放在操作符之前,能够方便地使用栈等数据结构进行表达式的求解。在C语言中实现逆波兰式求值可以采用栈的数据结构进行实现。本文将介绍基于栈的C语言实现逆波兰式的完整攻略。 逆波兰式的基本原理 逆波兰式可以通过以下步骤进行转换: 从左到右扫描中缀表达式…

    C 2023年5月23日
    00
  • Objective-C 入门篇(推荐)

    让我为您详细讲解一下“Objective-C 入门篇(推荐)”的完整攻略。 1. 入门篇介绍 Objective-C 是 iOS 开发的主要编程语言,入门 Objective-C 是 iOS 开发的第一步。本篇文章主要适用于对编程没有任何经验的初学者,将通过一步步教学,帮助您理解 Objective-C 编程语言的特性,以及如何使用 Xcode 开发工具来创…

    C 2023年5月22日
    00
  • C语言实现斗地主的核心算法

    下面我将为您详细讲解C语言实现斗地主的核心算法的完整攻略。 一、实现思路 1.1 牌型定义 我们可以采用两个数组来定义牌的大小和花色,其中大小可以用一个int值表示,花色可以用枚举类型表示。 1.2 发牌过程 发牌的过程可以采用随机数的方式实现,每个玩家依次取一张牌,直到每个玩家取到17张牌。 1.3 牌型判断 我们需要定义一个函数来判断牌的牌型,可以采用s…

    C 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部