From d3ac521b63aad890b1fdcb9ae7321b658d5c4764 Mon Sep 17 00:00:00 2001 From: Ayush Bisht <61404154+ayushbisht2001@users.noreply.github.com> Date: Fri, 12 Feb 2021 07:59:24 +0530 Subject: [PATCH] add count_number_of_one_bits.py (#4195) * count-bits * update --- bit_manipulation/count_number_of_one_bits.py | 34 ++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 bit_manipulation/count_number_of_one_bits.py diff --git a/bit_manipulation/count_number_of_one_bits.py b/bit_manipulation/count_number_of_one_bits.py new file mode 100644 index 000000000..51fd2b630 --- /dev/null +++ b/bit_manipulation/count_number_of_one_bits.py @@ -0,0 +1,34 @@ +def get_set_bits_count(number: int) -> int: + """ + Count the number of set bits in a 32 bit integer + >>> get_set_bits_count(25) + 3 + >>> get_set_bits_count(37) + 3 + >>> get_set_bits_count(21) + 3 + >>> get_set_bits_count(58) + 4 + >>> get_set_bits_count(0) + 0 + >>> get_set_bits_count(256) + 1 + >>> get_set_bits_count(-1) + Traceback (most recent call last): + ... + ValueError: the value of input must be positive + """ + if number < 0: + raise ValueError("the value of input must be positive") + result = 0 + while number: + if number % 2 == 1: + result += 1 + number = number >> 1 + return result + + +if __name__ == "__main__": + import doctest + + doctest.testmod()