【C/C++】C语言位图操作实例(亲测)

C语言中的位图操作通常用于处理大量的二进制数据,例如图像处理、压缩算法等。以下是一些C语言中的位图操作实例:

  1. 设置位图中的某一位
void set_bit(unsigned char *bitmap, int bit) {bitmap[bit / 8] |= (1 << (bit % 8));
}

这个函数将位图中的第bit位设置为1。我们首先计算出这个位在位图数组中的索引,然后使用位运算中的左移运算符将1移动到正确的位置。最后,我们使用位运算中的或运算符将这个值与位图数组中的对应元素进行或运算,这样就可以将这个位设置为1。

  1. 清除位图中的某一位
void clear_bit(unsigned char *bitmap, int bit) {bitmap[bit / 8] &= ~(1 << (bit % 8));
}

这个函数将位图中的第bit位设置为0。我们首先计算出这个位在位图数组中的索引,然后使用位运算中的左移运算符将1移动到正确的位置,并使用位运算中的取反运算符将这个值取反。最后,我们使用位运算中的与运算符将这个值与位图数组中的对应元素进行与运算,这样就可以将这个位设置为0。

  1. 检查位图中的某一位是否为1
int test_bit(unsigned char *bitmap, int bit) {return (bitmap[bit / 8] & (1 << (bit % 8))) != 0;
}

这个函数检查位图中的第bit位是否为1。我们首先计算出这个位在位图数组中的索引,然后使用位运算中的左移运算符将1移动到正确的位置。然后,我们使用位运算中的与运算符将这个值与位图数组中的对应元素进行与运算,如果结果不为0,那么这个位就是1,否则就是0。

这些都是C语言中常见的位图操作实例,它们可以帮助您更好地理解位图的概念和用法。

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

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

相关文章

【leetcode】1. 两数之和(easy)

给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回…

Jenkins 中 shell 脚本执行失败却不自行退出

Jenkins 中 执行 shell 脚本时&#xff0c;有时候 shell 执行失败了&#xff0c;或者判断结果是错误的&#xff0c;但是 Jenkins 执行完成后确提示成功 success 。 此时&#xff0c;可以通过条件判断来解决这个问题&#xff0c;让 Jenkins 强制退出并提示执行失败 failed 。 …

【MySQL系列】表约束的学习

「前言」文章内容大致是MySQL的表的约束。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、MySQL表的约束1.1 空属性1.2 默认值&#xff08;default&#xff09;1.3 列描述&#xff08;comment&#xff09;1.4 zerofill1.5 主键&#xff08;primary ke…

95 | Python 设计模式 —— 策略模式

策略模式(Strategy Pattern) 引言 策略模式是一种行为型设计模式,它定义了一系列的算法,并将每个算法封装在独立的策略类中,使得这些算法可以相互替换,而不影响客户端的使用。策略模式可以让客户端根据不同的需求选择不同的算法,从而使得系统更加灵活和可扩展。 在本…

将色号转为 不同透明度

export default function hexToRgb(hex: string, a 1) {// Hex&#xff08;十六进制&#xff09;、Dec&#xff08;十进制&#xff09;、Octal&#xff08;八进制&#xff09;、Bin&#xff08;二进制&#xff09;const result /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i…

stm32_断点调试无法进入串口接收中断

先说结果&#xff0c;可能是stm32调试功能/keil软件/调试器&#xff08;试过STLINK和JLINK两种&#xff09;的问题&#xff0c;不是代码&#xff1b; 1、入坑 配置完串口后&#xff0c;可以发送数据到串口助手&#xff0c;但不能接收数据并做处理&#xff0c;所以第一步&…

目标检测常用的数据集格式

在目标检测领域&#xff0c;有三种常用的数据集&#xff1a; 数据集标注文件格式bbox格式vocxmlxmin, ymin, xmax, ymax:bbox左上角(xmin, ymin)和右下角(xmax, ymax)的坐标cocojsonx, y, w, h:bbox左上角坐标(x, y)以及宽(w)和高(h)yolotxtxcenter, ycenter, w, h:bbox的中心…

【阻止IE强制跳转到Edge浏览器】

由于微软开始限制用户使用Internet Explorer浏览网站&#xff0c;IE浏览器打开一些网页时会自动跳转到新版Edge浏览器&#xff0c;那应该怎么禁止跳转呢&#xff1f; 1、点击电脑左下角的“搜索框”或者按一下windows键。 2、输入“internet”&#xff0c;点击【Internet选项…

LabVIEW开发分段反射器测试台

LabVIEW开发分段反射器测试台 随着对太空的观察需求越来越远&#xff0c;而不是当前技术&#xff08;如哈勃望远镜&#xff09;所能达到的&#xff0c;有必要增加太空望远镜主镜的尺寸。但是&#xff0c;增加主镜像的大小时存在几个问题。随着反射镜尺寸的增加&#xff0c;制造…

【jvm】jvm发展历程

目录 一、Sun Classic VM二、Exact VM三、HotSpot VM四、JRockit五、J9六、KVM、CDC、CLDC七、Azul VM八、Liquid VM九、Apache Harmony十、Microsoft JVM十一、Taobao JVM十二、Dalvik VM 一、Sun Classic VM 1.1996年java1.0版本&#xff0c;sun公司发布了sun classic vm虚拟…

vue3官网文档学习、复习笔记(快速上手)

目录 2.Attribute 绑定&#xff08;v-bind&#xff09; 3.事件监听&#xff08;v-on&#xff09; 4.表单绑定&#xff08;v-model&#xff09; 5.条件渲染&#xff08;v-if&#xff09; 6.列表渲染&#xff08;v-for&#xff09; all.value all.value.filter&#xff08;…

【MySQL】表中的一条数据在磁盘上是如何存放的?

文章目录 1 InnoDB行格式2 COMPACT行格式2.1 记录的额外信息2.2 记录的真实数据 3 Dynamic & Compressed4 VarChar(n)中n的最大取值&#xff1f; 1 InnoDB行格式 不同的存储引擎一般是为实现不同的特性来开发的&#xff0c;真实数据在不同存储引擎中的存放格式一般是不同的…

机器学习基础

什么是机器学习&#xff1f;----本质就是寻找一个函数。 可以训练什么样的函数呢&#xff1f; 可以训练一个回归的函数&#xff0c;也可以训练一个分类的函数。 这个例子的需要分类的类别是19*19的选项。 在机器学习领域里面不止回归和分类。 举例&#xff1a;预测函数 利用已…

Nginx(3)

目录 1.Nginx虚拟主机1.1基于IP虚拟主机1.2基于端口虚拟主机1.3基于域名实现的虚拟主机 2.日志详解 1.Nginx虚拟主机 虚拟主机&#xff0c;Nginx配置中的多个server{}区域对应不同的业务(站点) 虚拟主机方式基于域名的虚拟主机不同的域名访问不同的站点基于IP的虚拟主机不同的…

MySQL—锁篇

这里写目录标题 MySQL有哪些锁全局锁表级锁行级锁意向锁 为什么需要加锁MySQL锁粒度乐观锁和悲观锁是什么?如何实现?InnoDB的行锁是如何实现的?什么是两阶段锁协议?什么是三级封锁协议&#xff1f;MySQL死锁了&#xff0c;怎么办&#xff1f;加了什么锁&#xff0c;导致死锁…

linux 防火墙经常使用的命令

# 开启防火墙服务 systemctl start firewalld # 关闭防火墙服务 systemctl stop firewalld # 重启防火墙服务 systemctl restart firewalld # 开发端口 firewall-cmd --zonepublic --add-port8080/tcp --permanent # 移除端口 firewall-cmd --zonepublic --remove-port8080/tc…

第一百二十五天学习记录:C++提高:STL-deque容器(下)(黑马教学视频)

deque插入和删除 功能描述&#xff1a; 向deque容器中插入和删除数据 函数原型&#xff1a; 两端插入操作&#xff1a; push_back(elem); //在容器尾部添加一个数据 push_front(elem); //在容器头部插入一个数据 pop_back(); //删除容器最后一个数据 pop_front(); //删除容器…

低成本NFC端口静电保护方案图及ESD二极管选型指南

Near Field Communication&#xff0c;简称&#xff1a;NFC&#xff0c;中文名称&#xff1a;近场通信&#xff0c;是一种短距离高频的无线电技术&#xff0c;能够实现近距离无线通讯和数据交换&#xff0c;是由非接触式射频识别&#xff08;RFID&#xff09;及互连互通技术整合…

浅析MySQL InnoDB的隔离级别

隔离性简介 隔离性主要是指数据库系统提供一定的隔离机制,意思就是多个事务并发执行时&#xff0c;一个事务的执行不应影响其它事务的执行。 数据库中并发一致性问题&#xff1f; 在并发环境下&#xff0c;事务的隔离性很难保证&#xff0c;因此会出现很多并发一致性问题。 …

git push origin master 长时间卡住,或者报错 Missing or invalid credentials 怎么办

这很可能是 vscode 的问题 按照这个资料解决即可&#xff1a;https://juejin.cn/post/7062237873570840589 打开VScode的设置界面。方法即&#xff1a;“Code > Preferences > Settings”&#xff08;我是Mac系统&#xff0c;Windows下应该是File > Preferences >…