当前位置:网站首页>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
}
边栏推荐
- Control Unit 控制部件
- Codeforces round 712 (Div. 2) d. 3-coloring (construction)
- Palindrome (csp-s-2021-palin) solution
- Remote upgrade afraid of cutting beard? Explain FOTA safety upgrade in detail
- Solution to the palindrome string (Luogu p5041 haoi2009)
- Hang wait lock vs spin lock (where both are used)
- kubeadm系列-00-overview
- Alu logic operation unit
- Control unit
- [to be continued] I believe that everyone has the right to choose their own way of life - written in front of the art column
猜你喜欢

SAP method of modifying system table data

Sword finger offer 05 Replace spaces
![[to be continued] [depth first search] 547 Number of provinces](/img/c4/b4ee3d936776dafc15ac275d2059cd.jpg)
[to be continued] [depth first search] 547 Number of provinces

浅谈JVM(面试常考)

Pointnet++学习

sync.Mutex源码解读

Sword finger offer 58 - ii Rotate string left

剑指 Offer 53 - II. 0~n-1中缺失的数字

Gbase database helps the development of digital finance in the Bay Area

Codeforces round 712 (Div. 2) d. 3-coloring (construction)
随机推荐
PC寄存器
EOJ 2021.10 E. XOR tree
In this indifferent world, light crying
Support multi-mode polymorphic gbase 8C database continuous innovation and heavy upgrade
[es practice] use the native realm security mode on es
Annotation and reflection
Haut OJ 1316: sister choice buys candy III
Reader writer model
kubeadm系列-01-preflight究竟有多少check
The number of enclaves
[to be continued] I believe that everyone has the right to choose their own way of life - written in front of the art column
Introduction to tools in TF-A
软件测试 -- 0 序
ALU逻辑运算单元
YOLOv5-Shufflenetv2
Haut OJ 1347: addition of choice -- high progress addition
Yolov5 ajouter un mécanisme d'attention
剑指 Offer 35.复杂链表的复制
To be continued] [UE4 notes] L4 object editing
A new micro ORM open source framework