c语言 字符串map,C语言实现BitMap

BitMap的原理不用多说了。

主要说下位操作。

我们假设每个基础存储单元为char,则BYTESIZE = 8,如果为int则16 or 32。

当设置i时,首先ptr+=i/BYTESIZE,到达要操作的那个char。

然后对*ptr |= 0x01<

检查的时候,也是首先ptr+=i/BYTESIZE,然后查 (*ptr&0x01<

上面这个0x01<

代码如下:

#include

#include

#include

#define BYTES 1024

#define BYTESIZE 8

char buffer[BYTES];

char pre[8] = {0x01<<0, 0x01<<1, 0x01<<2, 0x01<<3, 0x01<<4, 0x01<<5, 0x01<<6, 0x01<<7};

void bitmap_init(char* buf, int n)

{

memset(buf, 0, sizeof(char)*n);

}

void bitmap_set(char* buf, int n, int i)

{

int add = i/BYTESIZE;

int pos = i%BYTESIZE;

if(add>=n)

{

return ;

}

buf += add;

*buf |= pre[pos]; //*buf |= (0x01<

}

int bitmap_check(char* buf, int n, int i)

{

int add = i/BYTESIZE;

int pos = i%BYTESIZE;

if(add>=n)

{

return 0;

}

buf += add;

return (*buf&pre[pos])==pre[pos]; // return (*ptr&0x01<

}

void bitmap_print(char* buf, int n)

{

int i;

int j;

char bs[BYTESIZE];

for(i=0;i

{

bs[i] = 0x01<

}

for(i=0;i

{

for(j=0;j

{

if((*buf&bs[j])==bs[j])

{

printf("%d\n", i*BYTESIZE+j);

}

}

buf++;

}

}

int main()

{

bitmap_init(buffer, BYTES);

bitmap_set(buffer, BYTES, 999);

printf("%d\n", bitmap_check(buffer, BYTES, 999));

printf("%d\n", bitmap_check(buffer, BYTES, 998));

bitmap_print(buffer, BYTES);

return 0;

}

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

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

相关文章

MySQL5.7.9安装与配置优化

一、 环境准备 1. 下载软件包 wget http://test.hexin.cn/software/mysql-5.7.9.tar.gz -P /usr/local/src/ wget http://test.hexin.cn/software/cmake-3.4.0.tar.gz -P /usr/local/src/ wget http://test.hexin.cn/software/boost_1_59_0.tar.gz -P /usr/local/src/ 2. 安装基…

[html] h5页面如何传递参数给小程序?

[html] h5页面如何传递参数给小程序&#xff1f; 1、H5页面 <script src"${base}/resources/common/js/jweixin.miniProgram.js"></script>wx.miniProgram.postMessage({ data: { shareUrl:href } });注意&#xff1a;传参必须使用data2、小程序页面接收…

k8s的认证和service account简述

k8s的认证&#xff1a; 与API server通信的客户端大致有两类&#xff1a; 1.集群客户端工具&#xff08;kubectl、kubeadm、kubelet等&#xff09; 2.集群内pod. 任何客户端访问k8s时的过程&#xff1a; 1.认证&#xff1a;任何客户端访问k8s&#xff0c;首先需要通过k8s的认…

单片机c语言应用100例第3版课后答案,单片机C语言应用100例(第3版)(含光盘1张)...

基 础 篇第1章 单片机概述及实验器材介绍21.1 单片机概述21.1.1 单片机的定义、分类与内部组成21.1.2 单片机应用系统的结构及其工作过程51.1.3 单片机的应用61.2 单片机基础知识71.2.1 数制与数制间的转换71.2.2 单片机中数的表示方法及常用数制的对应关系101.2.3 逻辑数…

biztalk在用户代码中构造多部分消息

大家知道&#xff0c;biztalk中可以在orchestration调用外部用户代码进行功能扩展&#xff0c;调用外部方法可以把消息作为参数传给外部方法&#xff0c;当然也可能需要外部方法返回一个消息到orchestration。<?xml:namespace prefix o />对于schema类型的消息&#xf…

[html] HTML5如何播放ts视频流?

[html] HTML5如何播放ts视频流&#xff1f; 引入mux.js转化&#xff0c;然后video展示个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

c语言标准库 swap,swap

swap描述 (Description)C 函数std::forward_list::swap()将第一个forward_list的内容与另一个交换。 如有必要&#xff0c;此函数会更改forward_list的大小。声明 (Declaration)以下是std :: forward_list :: swap()函数形式std :: forward_list头的声明。C11template void swa…

[缓存]迅雷下载原理

来自&#xff1a;http://hi.baidu.com/gcjia/blog/item/2b77bc3df8544803bba1675f.html1.迅雷是什么&#xff1f; 迅雷是基于P2SP的一款下载软件&#xff0c;能够大大增强下载速度&#xff0c;可谓迅雷不及掩耳盗铃之势如破竹。 P2SP的道理不复杂&#xff0c;就是指&#xff1a…

[html] 实现两列等宽布局的方式有哪些?

[html] 实现两列等宽布局的方式有哪些&#xff1f; 1.flex实现&#xff1a; .parent { display: flex; } .child { flex: 1; width: 50%; } 2.float实现&#xff08;但是要注意清除浮动&#xff09;&#xff1a; .child { float: left; width: 50%; }个人简介 我是歌谣&#…

背景透明度 下拉菜单

下拉菜单 ——————> <style> /* 下拉按钮样式 */ .dropbtn {background-color: #4CAF50;color: white;padding: 16px;font-size: 16px;border: none;cursor: pointer; }/* 容器 <div> - 需要定位下拉内容 */ .dropdown {position: relative;display: inlin…

datavideo切换台说明书_巴掌大三轴稳定器,稳过微云台,试试飞宇VLOGPocket2

几乎全民VLOG的时代&#xff0c;我们随处可见有人举着手机、相机记录生活&#xff0c;甚至还有品牌推出了自带微云台的手机。不过&#xff0c;即便在手机上硬“塞”进一个微云台&#xff0c;效果也始终无法媲美真正的云台&#xff0c;对视频拍摄的提升相对有限&#xff0c;大部…

[html] 写一个滚动吸顶的布局

[html] 写一个滚动吸顶的布局 position: sticky; top:20px&#xff1b;个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

C语言程序设计上机前三题,C语言程序设计(含上机实验与习题解答)

本书根据作者多年来教授不同基础学员的经验&#xff0c;针对初学者的特点&#xff0c;由浅入深&#xff0c;从一般程序设计语言的共性到C语言自身的特性&#xff0c;从C语言的语法规则到其内部实现&#xff0c;对C语言进行了系统的介绍。全书分上、下两篇。上篇介绍C语言程序设…

最新PC游戏下载链接

http://www.newyx.net/list/5_1.htm转载于:https://www.cnblogs.com/vilyLei/archive/2009/07/28/1533057.html

VSCode中Markdown目录显示异常

更新最新的VSCode之后编辑Markdown文件发现TOC标签的目录格式异常&#xff0c;发现是因为行尾字符导致&#xff0c;必须设置行尾字符进行解决。 转载于:https://www.cnblogs.com/phonecom/p/10904785.html

string转换成enum

String转换为Enum类型public enum TypeItemName{News,Bulletin,Dispatch} TypeItemName item (TypeItemName )Enum.Parse(typeof(TypeItemName ), inText, false);转载于:https://www.cnblogs.com/sceo/archive/2009/08/04/1538369.html

发纸牌c语言指针,算了算学了有一个月c语言了,写了个扑克牌程序

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼/*将5张扑克牌转化为9种牌型 */int change(int card[]){if(checkTongHuaShun(card))//同花顺牌型8{return 8;}else if(checkSiTiao(card))//四条牌型7{return 7;}else if(checkSanTiaoYiDui(card))//三条一对牌型6{return 6;}else …

[html] 写一个垂直的三栏布局,第一栏固定顶部,中间铺满,第三栏固定底部

[html] 写一个垂直的三栏布局&#xff0c;第一栏固定顶部&#xff0c;中间铺满&#xff0c;第三栏固定底部 好像有几种写法 我个人比较喜欢的是&#xff0c; <style> html, body { margin: 0; padding: 0; width: 100%; height: 100%; } .top-level { position: fixed; …

dlp防泄密系统卸载_怎样做好数据防泄密?奥赛系统早知道

前言大数据是趋势&#xff0c;泄密和数据泄露时常发生。员工离职、文件外传、在线拷贝..... 数据安全已经是每家公司必做功课。企业现状企业垂青“工作经历”和“自带资源”,“高薪挖人”被认为是企业事务快速增长、企业研制效果快速显现、企业快速兴起的捷径。当所“挖”人才来…

jsonp使用

浏览器可以向其他服务器发送数据&#xff0c;但是默认不会接收从其他服务器返回的数据&#xff0c;这叫做浏览器的同源策略&#xff0c;即XMLHttpRequest无法接收其他服务器的数据。但在实际生活场景中经常需要向其他服务器发送数据&#xff0c;这就需要用到jsonp实现跨域。 &l…