如何使用位逻辑运算来实现位向量

编程珠玑 如何使用位逻辑运算(例如与、或、移位)来实现位向量 位向量的用处,自己感觉有两个: 1.排序。但是限制条件太多 2.做标记数组。好处是:大大的减少了空间 #include using namespace std; /* 如何使用位逻辑运算(例如与、或、移位)来实现位向量 在codeblocks下,int占4个字节.  */ const int N = 10000; const int Size = N/(1<<5)+1; int Ar 阅读详情

如何使用位逻辑运算来实现位向量,及实现位向量的设置、清零和测试。

加入有一个99999999大小的位,如果用一个int数组来表示其值得话,需要的大小为99999999.但是我们退一步想,每个int型表示32为,

则99999999/32=312499余1,所以节省内存。因为只能使用位来表示,所以首先明白以下几点

<1>m除以2^n则商表示为m<<n

<2>m除以2^n的余数表示为m&(2^n-1)

<3>将int型变量a的第k位置1, 即a=a|(1<<k)

<4>将int型变量a的第k位清0,即a=a&~(1<<k)

#include "stdafx.h"
#include<iostream>
#define BITSPERWORD 32//一个整数包含的位数,Int为32位
#define MASK 0x1F//2^5-1,用来取余数
#define SHIFT 5//位移
#define N 10000000
using namespace std;
int a[1+N/BITSPERWORD];//数组大小
void set(int i)
{
	a[i<<SHIFT]|=(1<<(i&MASK));
}
void clr(int i)
{
	a[i<<SHIFT]&=~(1<<(i&MASK));

}
int test(int i)
{
	return a[i<<SHIFT]&(1<<(i&MASK));
}
int _tmain(int argc, _TCHAR* argv[])
{
	set(999);
	if(test(999))
		cout<<"true"<<endl;
	else
		cout<<"false"<<endl;
	clr(999);
	if(test(999))
		cout<<":true"<<endl;
	else
		cout<<"false"<<endl;


	
	return 0;
}


几点说明:

i<<SHIFT表示位于数组的那个整数,i&MASK表示在这个整数的那个位上。

关于更多位运算的应用,请参考我的另一篇文章

11种图像清晰度评价函数附MATLAB代码 博主的第一篇博客! 本科毕业论文是“基于图像处理的自动对焦技术研究”,对焦过程中的一个重要阶段是图像清晰度评价,博主自己用MATLAB实现了4类清晰度评价函数:基于图像梯度的清晰度评价函数、频域评价函数、信息熵评价函数、统计学评价函数,总计11种。博主之前没有用过MATLAB,完全是本科论文需要,没办法对着别人的代... 阅读详情

相关推荐

方差分析ANOVA、T检验、卡方检验的区别

T检验和ANOVA都是用来看样本之间均值是否相等,但是两者又有什么区别呢? 卡方检验是用来看分类变量之间有没有相关性。 自变量X类型 自变量X组数 因变量Y类型 分析方法 离散(类别) 仅仅2组 连续(均值) t检验 离散(类别) 2组及以上 连续(均值) ANOVA 离散(类别) 2组及以上 离散(类别) 卡方检验 进一步细分 方差分析 从理论上讲,方差分析有两个前提条件,一是因变量Y需要满足正态性要求,二是满足方差齐检验。 方差不齐时可使用‘非参数检验’,同时还可使用wel

itslifeng的博客 4万+

使用位逻辑运算实现位向量

如何使用位逻辑运算实现位向量呢? 起初,看到这个问题,我也有点懵逼,位逻辑运算还是了解一点,可是位向量这个名词还是有点陌生。 所以,想要解决这个问题,就要明确两个概念:位逻辑运算和位向量。 1.位运算:&(按位与)、|(按位或)、>>和>>(c中无,java里有)。 位运算实现位向量主要用前三个位运算。 2.位向量:顾名思义,位向量就是用一些二进制位组成的向量。在很多的情

Vmorish 1753

【推荐算法】召回模型总结

【推荐算法】召回模型总结

m0_48086806的博客 6244

【转】编程珠玑之第一题:如何使用位逻辑运算(如与、或、移位)来实现位向量?

编程珠玑开篇的一道题目是这样的: 如何使用位逻辑运算(如与、或、移位)来实现位向量? 一.何为位向量? 在许多情况下(如对象为满足或不满足某条性质的情况),用一个二进制位就足够表示一个对象了。但是,不能用一个变量名直接表示一个位(不存在单独为一位的数据类型)。于是,就考虑将多个位组成一个基本数据类型,通过对这个基本数据类型的操作,达到使用位的方法。同时,为了方便,把由位组成的基本数据类型组成数组,这样,就可以对一定范围的位数据集合进行操作。我们把这种形式的数据结构称为位向量。 接下来,再..

VisionLRJ的博客 440

Oracle Scheduler任务故障诊断 实战指南

当基础环境无异常时,需聚焦任务本身的配置与状态。定义(JOB)→ 调度(SCHEDULE)→ 执行(SLAVE进程)→ 日志(LOG),每个环节都可能存在卡点。Oracle Scheduler任务的“隐性故障”看似棘手,实则是环境配置、资源竞争、时间逻辑等问题的集中体现。通过本文的诊断工具和排查思路,你可以构建从“基础环境→任务配置→执行链路→日志追踪”的全维度分析体系,让每一个“消失”的任务都无所遁形。

Nuzbb的博客 1074

RT-DETR改进策略【损失函数篇】| 2024 引进Focaler-IoU损失函数 加强边界框回归 (Focaler-DIoU、Focaler-GIoU、Focaler-CIoU等)

本文记录的是改进RT-DETR的损失函数,将其替换成。现有研究通过利用边界框之间的几何关系来提高回归性能,但忽略了困难样本和简单样本分布对边界框回归的影响。不同检测任务中困难样本和简单样本的分布不同,对于简单样本占主导的检测任务,关注简单样本的边界框回归有助于提高检测性能;对于困难样本比例较高的检测任务,需要关注困难样本的边界框回归。,提高检测器在不同检测任务中的性能。实现的。

Limiiiing的博客 1923

1.6.2如何使用位逻辑运算(例如与、或、位移)来实现位向量?

/*如何使用位逻辑运算(例如与、或、位移)来实现位向量? 指的是实现位向量的设置、清零、探测三个操作。 问题理解: 错误:用一个int表示一位 应该是操作bit,但是长度可能不一定是8或者32的倍数,因此使用连续的多个bit存储,但是还是要操作bit 错误:使用%作为选定位置 不能使用%,k除以32,可以使用右移的方式 求模?k mod 32 ? 2012.1.6 */ #includ...

dianqi7184的专栏 216

AI智能体丨使用Coze一键生成爆款书单视频,3个月内获赞131.1w!(附保姆级教程)

这篇教程详细介绍了如何使用扣子(Coze)平台的AI智能工作流批量制作爆款书单视频。通过自动化流程,只需1-2分钟即可生成45-50秒的书单视频,效率提升近百倍。工作流包含文案生成、音频合成、图片素材获取、视频剪辑等全流程,支持随机生成8本书单、自动提取金句、智能配音等功能。教程提供了完整的操作步骤,包括剪映草稿配置、特效添加等细节,并附体验链接和示例效果。最终生成的视频包含书单展示、金句字幕、背景音乐等元素,适合书单号运营者快速批量产出内容。

李同学Lino的博客 2355

如何使用位逻辑运算来实现位向量的理解

这是一道非常基础的题目,考察对位运算的理解,好看题目只觉得好眼熟,然后(手贱)瞟了一眼答案,第一遍没看明白答案的内容,就上网查了一下,网上的人要么就是一笔带过(大概是觉得太简单),要么就是误人子弟。 解决题目之前应该先搞清楚题目是干嘛的: 位向量顾名思义就是用位来存储一个数,文中说存储N=10000000个数,每一位代表一个数。 我们可以定义一个int类型的数组int a[N],那么如果a[...

weixin_30411239的博客 233

Python 爬虫实战:爬虫与 ECharts 结合 —— 前端可视化展示

本文介绍了爬虫技术与ECharts可视化结合的完整实现流程。首先使用Python爬取京东商品数据(价格、评价数等),通过BeautifulSoup解析和pandas处理转换为JSON格式。然后构建前端页面,利用ECharts实现价格分布柱状图、价格-评价数散点图和店铺占比饼图三种可视化效果。文章详细解析了爬虫数据提取、格式转换和前端图表配置等关键技术点,并提供了完整的代码示例。最后提出了基于API接口、数据库存储等扩展方向,为数据采集到可视化展示提供了完整的解决方案。

2503_91057718的博客 633

OpenCV实战(24)——相机姿态估计

如果物体的 3D 结构是已知的,那么就可以预测物体如何投影到相机的传感器上,图像形成的过程由投影方程描述。当方程的大部分项已知时,就可以通过观察一些图像来推断其他元素 (2D 或 3D) 的值。相机姿态估计就是通过几个已知坐标的特征点,以及这些点在照片中的成像位置,求解出相机位于坐标系内的坐标与旋转角度。在本节中,我们将研究观察已知 3D 结构时的相机姿态估计问题。

盼小辉丶的博客 2万+

使用位逻辑运算来实现位向量

使用位逻辑运算来实现位向量,指的是实现位向量的设置、清零、探测三个操作。 代码如下: private const int bitsPerWord = 32; private const int shift = 5; private const int mask = 0x1F; private const int n = 10000000; private static readon

768

stable-diffusion-webui的逐步部署教程

本文主要介绍了stable-diffusion-webui的逐步部署教程,希望能对使用Stable Diffusion的同学们有所帮助。 文章目录 1. 前言 2. 逐步部署教程 2.1 创建Python环境 2.2 安装依赖库 2.3 运行代码

weixin_43178406的博客 6万+

使用位逻辑运算实现位向量并实现位图排序

[Programming Pearls]1.2 & 1.3 给定一个整型(32位)数组,输入一个参数i,然后设置数组的i位(bit位)是1,或者对第i位清零,或者探测第i位的值。使用位逻辑运算(例如与、或、移位)来实现位向量。 // 如何使用位逻辑运算(例如与、或、移位)来实现位向量 // 下面的函数使用常量来设置、清除以及测试位值 // 将位图存储在一个整型数组里面 #define B

imloo的专栏 806

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

使用位逻辑运算(如与、或、移位)来实现位向量

1. 位向量 位向量是一种数据结构,用以在使用小空间来处理大数据时。位向量也就是用“位”构成的向量,通常使用0来表示不存在,1来表示存在。 例:使用位向量(8位整数)表示集合{3,4,1,5,7,8} 则位向量为:1 1 0 1 1 1 0 1 2. 实现 #include <iostream> using namespace std; #define BITSPERWORD 32 ...

Rh's blog 878

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

[C++]使用位逻辑运算来实现位向量的理解

本博客转自 http://www.cnblogs.com/marsdu/p/3181734.html 这是一道非常基础的题目,考察对位运算的理解,好看题目只觉得好眼熟,然后(手贱)瞟了一眼答案,第一遍没看明白答案的内容,就上网查 了一下,网上的人要么就是一笔带过(大概是觉得太简单),要么就是误人子弟。 解决题目之前应该先搞清楚题目是干嘛的: 位向量顾名思义就是用位来存储一个数,文中说存储N

SMUElpmis's Blog 778

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

<<编程珠玑>>笔记之使用位逻辑运算来实现位向量

位向量:用位来存储一个数,例如N=10000000个数,每一位代表一个数 定义一个int类型的数组int a[N],如果a[9]=1,则代表文件中存在一个值为9,不过由于这里我们定义的是int,一个int是4字节,也就是32位,有效利用这个32位的可以缩减实际所开数组大小的'N'值,这里实际上也就只用开到int [n>>5]; 这样每一个数组的值,例如: a[0]代表了0-31; a[1]代表

NiaNiaJR的专栏 763

使用位逻辑运算实现位向量,并实现大数据排序

首先,先把这些数据实现位向量: 该例中数据类型为int,且为32位  #define BITSPERWORD 32 #define SHIFT 5 #define MASK 0x1f #define N 10000000 int a[1+N/BITSPERWOED]; 把其对应位置0:  void clr(int i) { a[i>>SHIFT] &= ~(1 }

大漠_孤烟的博客 388

《编程珠玑》一书中习题1.2中如何使用位逻辑运算来实现位向量的理解

这是一道非常基础的题目,考察对位运算的理解,乍看题目只觉得好眼熟,然后(手贱)瞟了一眼答案,第一遍没看明白答案的内容,就上网查了一下,网上的人要么就是一笔带过(大概是觉得太简单),要么就是误人子弟。 解决题目之前应该先搞清楚题目是干嘛的: 位向量顾名思义就是用位来存储一个数,文中说存储N=10000000个数,每一位代表一个数。 我们可以定义一个int类型的数组int a[N],那么如果a[...

majalis_C的博客 389

编程珠玑--如何使用位逻辑运算(例如不、或、移位)来实现位向量

首先说明一下,假设使用的是8bit的数据类型(32bit的不好画),数据是怎么排列的: 然后去理解下面的代码: #define BITSPERWORD 32 //表示一个整型含有32个bit #define SHIFT 5 //单位位移量 #define MASK 0x1F //掩码 #define N 10000000 //表示有1000万个数 int a[1+N/BIT

陈氏春秋 1904
上一篇: 编辑距离问题
下一篇: 位运算应用
谭墨墨快乐
博客等级 码龄15年 15粉丝 25原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值