当前位置:网站首页>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
}
边栏推荐
- Add level control and logger level control of Solon logging plug-in
- MySQL数据库(一)
- How can the Solon framework easily obtain the response time of each request?
- Sword finger offer 53 - I. find the number I in the sorted array
- The number of enclaves
- Sword finger offer 04 Search in two-dimensional array
- 剑指 Offer 06.从头到尾打印链表
- Haut OJ 1218: maximum continuous sub segment sum
- Add level control and logger level control of Solon logging plug-in
- YOLOv5添加注意力機制
猜你喜欢

Sword finger offer 04 Search in two-dimensional array

从Dijkstra的图灵奖演讲论科技创业者特点

Codeforces round 712 (Div. 2) d. 3-coloring (construction)

Talking about JVM (frequent interview)

游戏商城毕业设计

CF1634 F. Fibonacci Additions

Sword finger offer 53 - ii Missing numbers from 0 to n-1

读者写者模型

用STM32点个灯

Corridor and bridge distribution (csp-s-2021-t1) popular problem solution
随机推荐
Remote upgrade afraid of cutting beard? Explain FOTA safety upgrade in detail
F - Two Exam(AtCoder Beginner Contest 238)
YOLOv5添加注意力机制
Corridor and bridge distribution (csp-s-2021-t1) popular problem solution
Yolov5 ajouter un mécanisme d'attention
R语言【数据集的导入导出】
剑指 Offer 53 - II. 0~n-1中缺失的数字
Codeforces Round #732 (Div. 2) D. AquaMoon and Chess
lxml.etree.XMLSyntaxError: Opening and ending tag mismatch: meta line 6 and head, line 8, column 8
Control Unit 控制部件
过拟合与正则化
游戏商城毕业设计
Alu logic operation unit
Pointnet++的改进
搭建完数据库和网站后.打开app测试时候显示服务器正在维护.
Analysis of backdoor vulnerability in remote code execution penetration test / / phpstudy of national game title of national secondary vocational network security B module
Daily question - Search two-dimensional matrix PS two-dimensional array search
YOLOv5添加注意力機制
[jailhouse article] performance measurements for hypervisors on embedded ARM processors
Haut OJ 1316: sister choice buys candy III