当前位置:网站首页>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
}
边栏推荐
- PC register
- A new micro ORM open source framework
- 【实战技能】非技术背景经理的技术管理
- In this indifferent world, light crying
- YOLOv5-Shufflenetv2
- Haut OJ 1350: choice sends candy
- Find a good teaching video for Solon framework test (Solon, lightweight application development framework)
- Csp-j-2020-excellent split multiple solutions
- Introduction to convolutional neural network
- YOLOv5添加注意力机制
猜你喜欢
Personal developed penetration testing tool Satania v1.2 update
To be continued] [UE4 notes] L4 object editing
挂起等待锁 vs 自旋锁(两者的使用场合)
SAP method of modifying system table data
【Jailhouse 文章】Performance measurements for hypervisors on embedded ARM processors
R语言【数据集的导入导出】
【Jailhouse 文章】Jailhouse Hypervisor
【实战技能】如何做好技术培训?
Sword finger offer 05 Replace spaces
object serialization
随机推荐
Pointnet++ learning
Educational codeforces round 109 (rated for Div. 2) C. robot collisions D. armchairs
Chapter 6 data flow modeling - after class exercises
过拟合与正则化
Control Unit 控制部件
Find a good teaching video for Solon framework test (Solon, lightweight application development framework)
[to be continued] I believe that everyone has the right to choose their own way of life - written in front of the art column
卷积神经网络——卷积层
Talking about JVM (frequent interview)
Support multi-mode polymorphic gbase 8C database continuous innovation and heavy upgrade
Haut OJ 1321: mode problem of choice sister
[binary search] 34 Find the first and last positions of elements in a sorted array
Sword finger offer 05 Replace spaces
Acwing 4301. Truncated sequence
Codeforces Round #716 (Div. 2) D. Cut and Stick
智慧工地“水电能耗在线监测系统”
Service fusing hystrix
In this indifferent world, light crying
A new micro ORM open source framework
After setting up the database and website When you open the app for testing, it shows that the server is being maintained