Skip to content

Commit 80cbc31

Browse files
committed
[Feature] Added Binary complement.
1 parent 25021fd commit 80cbc31

File tree

5 files changed

+26
-3
lines changed

5 files changed

+26
-3
lines changed

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,9 @@ $ coverage report -m
5050
Different algorithmic programs. Grouped by general topic.
5151

5252
#### Bitwise Algorithms
53-
* [Hamming Distance](algorithms/bitwise/operations.py)
54-
* [Hamming Weight](algorithms/bitwise/operations.py)
53+
* [Hamming Distance](algorithms/bitwise/hamming_ops.py)
54+
* [Hamming Weight](algorithms/bitwise/hamming_ops.py)
55+
* [Binary Complement](algorithms/bitwise/complement.py)
5556

5657
#### Mathematical Algorithms
5758
* [Fibonacci](algorithms/math/fibonacci.py)

algorithms/bitwise/complement.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
def complement(num):
2+
"""
3+
Find the non-zero padded binary compelement.
4+
5+
"""
6+
if not num:
7+
return 1
8+
i = 1
9+
while i <= num:
10+
num ^= i
11+
i = i << 1
12+
return num
File renamed without changes.

tests/test_complement.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import unittest
2+
from algorithms.bitwise.complement import complement
3+
4+
class TestComplement(unittest.TestCase):
5+
6+
def test_complement(self):
7+
self.assertEqual(0b010, complement(0b101))
8+
self.assertEqual(0b01, complement(0b10))
9+
self.assertEqual(0b0011000101000001111, complement(0b1100111010111110000))
10+
self.assertEqual(0b1, complement(0b0))

tests/test_bitwise.py renamed to tests/test_hamming.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import unittest
2-
from algorithms.bitwise.operations import hamming_distance, hamming_weight
2+
from algorithms.bitwise.hamming_ops import hamming_distance, hamming_weight
33

44
class test_bitwise(unittest.TestCase):
55

0 commit comments

Comments
 (0)