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

news2024/12/25 0:25:56

前言

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

一、人物简介

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

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

二、将两个字节合并成一个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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/430072.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA入坑之异常处理

目录 一、程序错误 二、异常 2.1概述 2.2产生原因 2.3Java 异常层次结构 Error Exception 2.3.1非受检异常 2.3.2受检异常 三、异常处理机制 3.1概述 ​编辑 调用栈Call Stack 3.2异常类型的实现 3.3异常处理的关键字&#xff1a; 3.3.1try-catch Block ​编辑 …

推荐系统概述

1.推荐系统的意义 随着移动互联网的飞速发展&#xff0c;人们已经处于一个信息过载的时代。在这个时代中&#xff0c;信息的生产者很难将信息呈现在对它们感兴趣的信息消费者面前&#xff0c;而对于信息消费者也很难从海量的信息中找到自己感兴趣的信息。推荐系统就是一个将信息…

git使用常见问题(提交代码,合并冲突)

文章目录Git提交代码步骤git pullgit statusgit addgit commitgit pushgit代码冲突合并问题方法一&#xff1a;放弃本地代码方法二&#xff1a;合并代码常用命令以及参数git add 将文件添加到仓库&#xff1a;git diff 比较文件异同git log 查看历史记录git reset 代码回滚版本…

Matlab-神经网络43个案例

神经网络简介 人工神经网络是在现代神经科学的基础上提出和发展起来的&#xff0c;旨在反映人脑结构及 功能的一种抽象数学模型。自 1943 年美国心理学家 W. McCulloch 和数学家 W. Pitts 提 出形式神经元的抽象数学模型—MP 模型以来&#xff0c;人工神经网络理论技术经过了 …

Java企业级开发学习笔记(2.1)MyBatis实现简单查询

该文章主要为完成实训任务&#xff0c;详细实现过程及结果见【http://t.csdn.cn/zi0wB】 文章目录零、创建数据库与表一、基于配置文件方式使用MyBatis基本使用1.1 创建Maven项目 - MyBatisDemo1.2 在pom文件里添加相应的依赖1.3 创建与用户表对应的用户实体类 - User1.4 创建用…

数据库系统工程师——第四章 操作系统基础

文章目录&#x1f4c2; 第四章、操作系统基础 &#x1f4c1; 4.1 操作系统概述 &#x1f4d6; 4.1.1 基本概念 &#x1f4d6; 4.1.2 操作系统分类 &#x1f4d6; 4.1.3 操作系统的发展 &#x1f4c1; 4.2 进程管理 &#x1f4d6; 4.2.1 基本概念 &#x1f4d6; 4.2.2 进程的控…

电动滑板车出口欧洲CE认证EN17128标准

电动滑板车物美价廉、十分节省能源&#xff0c;充6小时电能骑20多公里&#xff0c;时速最高可达32迈&#xff0c;这对于任何年龄阶段(>12岁)的朋友来说绝对是非常适合的一种选择&#xff1b;与电动自行车相比&#xff0c;它造型美观、操作方便&#xff0c;而且因为座位重心低…

MaxHub智能电视使用123

开机和关机电视正下方&#xff0c;中央有一个圆形按钮。开机时&#xff0c;轻按此按钮1下&#xff0c;智能电视开始启动。启动后会显示MAXHUB。 如果使用中想让智能电视进入休眠状态&#xff0c;轻按此按钮1下即可。此时按钮变为红色。唤醒时&#xff0c;轻按此按钮1下&#x…

智慧物流仓储人员定位系统解决方案,提升物流仓储安全管理效率

随着近年我国制造业的崛起&#xff0c;物流业也得到了迅猛的发展&#xff0c;仓储越来越得到人们的重视。然而&#xff0c;传统仓储业存在着效率低、利用率不高、作业条件差等问题&#xff0c;以及部分仓储企业的业务模式较为基础和单一&#xff0c;导致仓储行业整体盈利水平较…

加密市场喜忧参半 DeFi与CeFi、监管之间有矛盾吗?

目前&#xff0c;身处其中的加密从业者大多喜忧参半。一方面&#xff0c;美国监管机构对中心化交易所的持续打压冲击着市场信心&#xff1b;另一方面&#xff0c;以BTC、ETH为代表的加密资产在二级市场表现相当不俗。 除价格因素外&#xff0c;加密领域内的多个信号正在显现出强…

详细介绍性能测试的方法(含文档)

性能测试是软件测试中的一个重要环节&#xff0c;其目的是评估系统在不同负荷下的性能表现&#xff0c;包括响应时间、吞吐量、并发数等指标。通常可以通过以下几种方法进行性能测试&#xff1a; 1、负载测试 负载测试是模拟多用户同时访问系统&#xff0c;测试系统在高并发、…

SaaS电子病历系统源码

SaaS电子病历系统&#xff1a;现代医疗的新趋势 SaaS电子病历系统是一种基于云计算技术的电子病历服务平台&#xff0c;它将传统的病历记录存储在云端&#xff0c;使用者可以通过互联网随时随地访问和查询病历信息。 相比于传统的医疗信息系统&#xff0c;SaaS电子病历系统具…

每日学术速递4.15

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Zip-NeRF: Anti-Aliased Grid-Based Neural Radiance Fields 标题&#xff1a;Zip-NeRF&#xff1a;基于网格的抗锯齿神经辐射场 作者&#xff1a;Xueyan Zou, Jianwei Yang, Hao …

在 Ubuntu 使用SQL Server创建 Go 应用程序

在 Ubuntu 使用SQL Server创建 Go 应用程序一、设置环境1.1、安装 SQL Server1.2、安装 GoLang1.3、安装 ODBC 驱动程序和 SQL 命令行实用工具 SQL 服务器二、使用 SQL 服务器创建 Go 应用程序2.1、创建连接到 SQL Server 并执行查询的 Go 应用2.2、创建一个使用 GORM 连接到 S…

macOS 13.4Beta 2(22F5037d)发布

系统介绍 4 月 12 日消息&#xff0c;苹果今日向 Mac 电脑用户推送了 macOS 13.4 开发者预览版 Beta 2 更新&#xff08;内部版本号&#xff1a;22F5037d&#xff09;&#xff0c;本次更新距离上次发布隔了 14 天。 macOS Ventura 带来了台前调度、连续互通相机、FaceTime 通…

Python爬虫之Scrapy框架系列(19)——实战下载某度猫咪图片【媒体管道类】

目录&#xff1a;1.引入&#xff1a;1.1 不使用管道&#xff0c;直接存储本地&#xff1a;①创建scrapy项目及爬虫文件②编写爬虫文件&#xff1a;③效果&#xff1a;1.2 使用管道&#xff0c;进行本地存储&#xff1a;①编写爬虫文件&#xff1a;②在items.py文件中创建相应的…

前缀和算法【一维、二维】

算法推导 首先这种算法适合于求从 x 到 y 的和。 一维情况 一维代码十分简单&#xff0c;我们只需要每个都记录前面所有的和即可&#xff0c;注意细节 下标从1开始 for(int i 1 ; i < n ; i ){cin >> temp;a[i] a[i - 1] temp; }这里我们就看两种情况&#xff…

接口优化的常见方案实战总结

一、背景 针对老项目&#xff0c;去年做了许多降本增效的事情&#xff0c;其中发现最多的就是接口耗时过长的问题&#xff0c;就集中搞了一次接口性能优化。本文将给小伙伴们分享一下接口优化的通用方案。 &#xfeff; &#xfeff; &#xfeff;&#xfeff; 二、接口优化…

Maven下载与配置

Maven官网链接&#xff1a; https://maven.apache.org/ 进入后首页展示最新的下载地址 如果要下载历史版本&#xff0c;可以搜索 legacy archives 来快速找到这个地方&#xff0c;点击进入 下载完毕后&#xff0c;解压放到D盘&#xff08;或根据个人喜好存放&#xff09; 首先…

4月22日丨【云数据库技术沙龙】技术进化,让数据更智能

4月22日&#xff0c;云数据库技术沙龙“MySQL x ClickHouse”专场 “MySQL x ClickHouse” 技术沙龙&#xff0c;本次沙龙以“技术进化&#xff0c;让数据更智能”为主题&#xff0c;汇聚字节跳动、阿里云、玖章算术、华为云、腾讯云、百度等众多数据库厂商的技术大咖&#xf…