From bf5d9c18d3cdd27d8766e151eb67542d197a0908 Mon Sep 17 00:00:00 2001
From: Bruno Freitas Tissei <bft15@inf.ufpr.br>
Date: Thu, 1 Feb 2018 13:59:37 -0200
Subject: [PATCH] Add bitmask

Signed-off-by: Bruno Freitas Tissei <bft15@inf.ufpr.br>
---
 structure/bitmask.cpp | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)
 create mode 100644 structure/bitmask.cpp

diff --git a/structure/bitmask.cpp b/structure/bitmask.cpp
new file mode 100644
index 0000000..f6c8e2c
--- /dev/null
+++ b/structure/bitmask.cpp
@@ -0,0 +1,40 @@
+/**
+ * Bitmask 
+ * Complexity (Time): O(1)
+ * Complexity (Space): O(1)
+ */
+
+// Set bit in position pos (0 to 1)
+void set(ll &bitmask, int pos) { 
+  bitmask |= (1 << pos); 
+}
+
+// Set all bits in a bitmask with size n
+void set_all(ll &bitmask, int n) { 
+  bitmask = (1 << n) - 1; 
+}
+
+// Unset bit in position pos (1 to 0)
+void unset(ll &bitmask, int pos) { 
+  bitmask &= ~(1 << pos); 
+}
+
+// Unset all bits
+void unset_all(ll &bitmask) { 
+  bitmask = 0; 
+}
+
+// Get value of bit in position pos
+int get(ll bitmask, int pos) { 
+  return bitmask & (1 << pos); 
+}
+
+// Toggle value in position pos
+void toggle(ll &bitmask, int pos) { 
+  bitmask ^= (1 << pos); 
+}
+
+// Get position of least significant 1
+int least_significant_one(ll bitmask) {
+  return bitmask & (-bitmask); 
+}
-- 
GitLab