当前位置:网站首页>Bit mask of bit operation
Bit mask of bit operation
2022-07-05 05:36:00 【Falling spring is only inadvertently】
Bitmask
Use bit mask to realize set
Operation set is the most important application of bit mask . In this application ,N Bit integer variables indicate that you can have 0 To A-l Set of integer elements . To judge an element i Is included in the collection , Just look at the representation 2 i 2^i 2i Whether the bit of has been turned on . for example , Can have 6 Collection of elements {1,4,5,6,7,9} The whole number of is 754 Shown by the following 、
21+24+25+26+27+29=101110010 = 754
Pizza shop example
Suppose a pizza shop allows customers to choose their own ingredients , Now I want to write a ordering system for this store . This pizza shop has 0 To 19 This is the number one 20 Ingredients , You can choose to add / Don't add . that ,1 The message of a pizza is 20 Collection of elements , So it can be represented by a bit mask . Of course , You can also use a size of 20 An array of Boolean types . however , Using bit mask can improve the speed of set operation through a variety of bit operations .
Find empty sets and compact sets
An empty set is 0 了 . Compact set
int fullPizza = (1<<20) - 1
take 1<< 20 Expressed in binary form , It's just one. 1 And noodles 20 individual 0 The integer of . Subtract one , You can get 20 Bits are turned on (1) The numerical
Additive elements
toppings |= (1<<p);
take 1 Move to the left p You get the first p Bit open integer
Confirm whether the element is included
if( toppings & (1<<p)) cout<<" in it!"<<endl;
& That only toppings Of the i Only when the bit is turned on can it be true
Remove elements
toppings &= ~(1<<p);
Switch elements
It turns out to be 0 becomes 1, yes 1 becomes 0
toppings ^= (1<<p);
Operation on two sets
int added = (a|b); //a and b A collection of
int intersection = (a&b);// a and b Intersection
int removed = (a&~b); // from a subtract b The difference between the set
int toggled = (a^b); // Only be a and b A set in Contains a collection of elements .
Find the smallest element
That is to say, there are several current low positions 0?
int firstTopping = (toppings & -topping);
Delete the smallest element
toppings &= (topping - 1);
Traversing subsets
for(int subset = pizza; subset;subset = ((subset-1)&pizza)){
// subset yes pizza Subset
}
边栏推荐
- 个人开发的渗透测试工具Satania v1.2更新
- [binary search] 34 Find the first and last positions of elements in a sorted array
- 【实战技能】非技术背景经理的技术管理
- Haut OJ 1245: large factorial of CDs --- high precision factorial
- Introduction to memory layout of FVP and Juno platforms
- Introduction to convolutional neural network
- Yolov5 adds attention mechanism
- 每日一题-搜索二维矩阵ps二维数组的查找
- ALU逻辑运算单元
- Zzulioj 1673: b: clever characters???
猜你喜欢
[to be continued] [UE4 notes] L3 import resources and project migration
Sword finger offer 09 Implementing queues with two stacks
Yolov5 adds attention mechanism
CF1634 F. Fibonacci Additions
On-off and on-off of quality system construction
Support multi-mode polymorphic gbase 8C database continuous innovation and heavy upgrade
Sword finger offer 04 Search in two-dimensional array
SAP-修改系统表数据的方法
Acwing 4300. Two operations
lxml.etree.XMLSyntaxError: Opening and ending tag mismatch: meta line 6 and head, line 8, column 8
随机推荐
个人开发的渗透测试工具Satania v1.2更新
Sword finger offer 09 Implementing queues with two stacks
Codeforces round 712 (Div. 2) d. 3-coloring (construction)
kubeadm系列-00-overview
Introduction to tools in TF-A
kubeadm系列-02-kubelet的配置和启动
Sword finger offer 04 Search in two-dimensional array
SAP method of modifying system table data
Web APIs DOM node
Summary of Haut OJ 2021 freshman week
记录QT内存泄漏的一种问题和解决方案
CF1634 F. Fibonacci Additions
Haut OJ 1357: lunch question (I) -- high precision multiplication
Detailed explanation of expression (csp-j 2021 expr) topic
第六章 数据流建模—课后习题
搭建完数据库和网站后.打开app测试时候显示服务器正在维护.
PC寄存器
object serialization
ssh免密登录设置及使用脚本进行ssh登录并执行指令
网络工程师考核的一些常见的问题:WLAN、BGP、交换机