利用位运算符设置标志位

        在写程序的过程中,会碰到需要修改标志位的情况。比如需要设置一个文件标识符可读或可写,首先想到的是利用int变量(1表示不可读不可写 ,2表示不可读可写,3表示可读不可写,4表示可读可写)。但是这样不直观,比较难记。

        在计算机底层使用0、1存储,因此我们可以使用int变量进行位运算来设置标志位,比如如下依据1为是,0为否规定:

对于下面的代码示例:

enum FDevent
{
    TimeOut=0x01,          //001
    WriteAble=0x02,        //010
    ReadAble=0x04          //100
};


int setWriteable(struct Channel *channel, bool flag)
{
    if(flag)
    {
        channel->event |= WriteAble;
    }
    else
    {
        channel->event = channel->event & ~WriteAble;
    }
    return 0;
}

函数的目的是用来设置 struct Channel 结构体类型的 channel 对象的 event 成员的 WriteAble 标志位。

  1. 如果 flag 为真,即为 true,则执行下面代码:

    channel->event |= WriteAble;,这是一个按位或的运算符,将 channel->event 成员与 WriteAble 进行按位或操作,并将结果重新赋值给 channel->event。这实际上是将 channel->event 的 WriteAble 标志位置为 1。

  1. 如果 flag 为假,即为 false,则执行下面代码:

    channel->event = channel->event & ~WriteAble;,这里用到了按位与和按位取反的运算符。channel->event & ~WriteAble 表达式将 channel->event 的 WriteAble 标志位清零,然后将结果赋值给 channel->event

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT提问技巧——对话提示

ChatGPT提问技巧——对话提示 对话提示是一种允许模型生成模拟两个或多个实体之间对话的文本的技术。 通过向模型提供上下文和一组角色或实体,以及他们的角色和背景,并要求模型生成他们之间的对话。 因此,应向模型提供一个上下文和一组角色…

中国工程精英智创数字工厂——2023纵览基础设施大会暨光辉大奖赛观察 (下)

中国工程精英智创数字工厂 ——2023纵览基础设施大会暨光辉大奖赛观察 (下) 吴付标 中国制造的尽头是智能化、智慧化,这一趋势正在加速前进。2022年,中国以50座达沃斯论坛盖章认证的“灯塔工厂”数量冠绝全球,而“数…

Javascript的Execution Context

概要 本文主要通过一个实例,来理解什么是Javascript中的Execution Context,以及在JavaScript执行过程中,Execution Context是如何工作的。 基本概念 事实上,我们可以理解为JavaScript代码在一个盒子中执行,而这个盒…

Linux 建立链接(ln)

目录 1、ln命令 创建软链接: 创建硬链接: 2、输出重定向(>/>>) 3、管道(|) 1、ln命令 (英文全拼:link files)为某一个文件在另外一个位置建立一个同步的…

如何使用vue定义组件之——子组件调用父组件数据

1.定义父子模板template <div class"container"><my-father></my-father><my-father></my-father><my-father></my-father><!-- 此处无法调用子组件&#xff0c;子组件必须依赖于父组件进行展示 --><!-- <my-…

如何实现sam(Segment Anything Model)|fastsam模型

sam是2023年提出的一个在图像分割领域的大模型&#xff0c;其具备了对任意现实数据的分割能力&#xff0c;其论文的介绍可以参考 https://hpg123.blog.csdn.net/article/details/131137939&#xff0c;sam的亮点在于提出一种工作模式&#xff0c;同时将多形式的prompt集成到了语…

武汉星起航:秉承客户至上服务理念,为创业者打造坚实后盾

在跨境电商的激荡浪潮中&#xff0c;武汉星起航电子商务有限公司一直秉持着以客户为中心的发展理念&#xff0c;为跨境创业者提供了独特的支持和经验积累&#xff0c;公司通过多年的探索和实践&#xff0c;成功塑造了一个以卖家需求为导向的服务平台&#xff0c;为每一位创业者…

专升本 C语言笔记-03 变量的作用域

1.变量的概念 内存中有个存储区域,这个地方的数据可以在同一类型范围内不断变化通过变量名,可以访问这块内存区域,获取里面的值; 变量名的构成:数据类型 变量名 值 C语言中变量声明格式: 数据类型 变量名 值 2.变量的注意 2.1.全局变量: 定义在函数外部的叫全局变量…

监听抖音直播间的评论并实现存储

监听抖音直播间评论&#xff0c;主要是动态监听dom元素的变化&#xff0c;如果评论是图片类型的&#xff0c;获取alt的值 主要采用的是MutationObserver&#xff1a;https://developer.mozilla.org/zh-CN/docs/Web/API/MutationObserver index.js如下所示:function getPL() {…

交流回馈老化测试负载如何实现这些功能的

交流回馈老化测试负载是一种用于模拟电力系统中各种负载特性的装置&#xff0c;它可以对电力设备进行长时间的老化测试&#xff0c;以确保其在实际运行中的稳定性和可靠性。交流回馈老化测试负载主要通过以下几个方面实现这些功能&#xff1a; 1. 模拟负载特性&#xff1a;交流…

科普:防泄密软件下载(实用+收藏篇)

防泄密软件是企业构建安全信息环境、保障业务稳定发展的重要工具。是一种专门用于保护数据安全、防止信息泄露的软件工具。 它能够监控和管理电脑的使用行为&#xff0c;防止敏感数据被非法获取、篡改或传播。 防泄密软件通过实时监控、加密技术、访问控制等手段&#xff0c;…

C# EPPlus导出dataset----Excel2绘制图像

一、生成折线图方法 /// <summary> ///生成折线图 /// </summary> /// <param name="worksheet">sheet页数据 </param> /// <param name="colcount">总列数</param> /// &l…

LarkXR上新了 | Apollo多终端与XR体验的优化创新

作为领先的数字平行世界产品技术提供方&#xff0c;「Paraverse平行云」一直致力于为企业和开发者提供企业级实时云渲染解决方案。其多终端接入产品LarkXR Apollo&#xff0c;基于底层Runtime技术&#xff0c;实现了在Windows、Linux、MacOS、Android、iOS等多种操作系统下&…

mysql中文乱码解决方案

mysql中文乱码解决方案 现象 查看配置时&#xff0c;字符编码已经全是utf8&#xff0c;但查询时中文还是乱码&#xff1a; 原因 虽然查看字符编码时已经是utf8&#xff0c;但当数据库被连接时&#xff0c;可能还会是协商出其他的编码。 解决 需要强制将协商的编码都变成…

机试:成绩排名

问题描述: 代码示例: #include <bits/stdc.h> using namespace std;int main(){cout << "样例输入" << endl; int n;int m;cin >> n;int nums[n];for(int i 0; i < n; i){cin >> nums[i];}// 排序for(int i 0; i < n; i){//…

[c++] 右值引用

1 左值和左值引用 在说右值引用之前&#xff0c;需要先说一下左值引用。当然&#xff0c;在右值引用出现之前&#xff0c;左值引用也不叫左值引用&#xff0c;就叫引用。现在一般也直接将左值引用称作引用&#xff0c;将右值引用称作右值引用。左值引用类似于 c 语言中经常使用…

算法详解——图的深度优先遍历和广度优先遍历

目录 一、图结构二、深度优先遍历2.1 图的遍历2.2 深度优先遍历过程2.3 深度优先遍历核心思想2.4 深度优先遍历实现 三、广度优先遍历3.1 广度优先遍历过程3.2 广度优先遍历核心思想3.3 广度优先遍历实现 参考文献 一、图结构 图结构指的是如下图所示的由节点和边组成的数据。 …

力扣刷题Days18-190颠倒二进制位(js)

目录 1&#xff0c;题目 2&#xff0c;代码 1&#xff0c;逐位颠倒 800001011 循环过程&#xff1a; 最终结果&#xff1a; 3&#xff0c;学习与总结 1&#xff0c;<< 位运算符 1&#xff0c;题目 颠倒给定的 32 位无符号整数的二进制位。 2&#xff0c;代码 1…

高频:spring知识

1、bean的生命周期&#xff1f; 主要阶段 初始化 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh 信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext67424e82: startup date []; root of context hi…

代码原理文献阅读(4)_3.12

4.2.经济调度问题(ED) 事实上&#xff0c;UC本质上也是一种ED问题。但随着电力电子技术的快速发展&#xff0c;越来越多的新型设备接入电力系统&#xff0c;调度逐渐变得"杂"、"散"、"灵活" 。此时&#xff0c;系统受到不确定性的影响更加强烈&a…
最新文章