diff options
author | Niklas Fiekas <niklas.fiekas@backscattering.de> | 2020-05-29 16:28:02 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-29 16:28:02 (GMT) |
commit | 8bd216dfede9cb2d5bedb67f20a30c99844dbfb8 (patch) | |
tree | 0cae604e76e929467bba3cb1ebbec3ac8a417947 /Doc | |
parent | 364b5ead1584583db91ef7f9d9f87f01bfbb5774 (diff) | |
download | cpython-8bd216dfede9cb2d5bedb67f20a30c99844dbfb8.zip cpython-8bd216dfede9cb2d5bedb67f20a30c99844dbfb8.tar.gz cpython-8bd216dfede9cb2d5bedb67f20a30c99844dbfb8.tar.bz2 |
bpo-29882: Add an efficient popcount method for integers (#771)
* bpo-29882: Add an efficient popcount method for integers
* Update 'sign bit' and versionadded in docs
* Add entry to whatsnew document
* Doc: use positive example, mention population count
* Minor cleanups of the core code
* Move popcount_digit closer to where it's used
* Use z instead of self after conversion
* Add 'absolute value' and 'population count' to docstring
* Fix clinic error about missing summary line
* Ensure popcount_digit is portable with 64-bit ints
Co-authored-by: Mark Dickinson <dickinsm@gmail.com>
Diffstat (limited to 'Doc')
-rw-r--r-- | Doc/library/stdtypes.rst | 21 | ||||
-rw-r--r-- | Doc/whatsnew/3.10.rst | 3 |
2 files changed, 24 insertions, 0 deletions
diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst index 6a9fdcb..2082b84 100644 --- a/Doc/library/stdtypes.rst +++ b/Doc/library/stdtypes.rst @@ -478,6 +478,27 @@ class`. In addition, it provides a few more methods: .. versionadded:: 3.1 +.. method:: int.bit_count() + + Return the number of ones in the binary representation of the absolute + value of the integer. This is also known as the population count. + Example:: + + >>> n = 19 + >>> bin(n) + '0b10011' + >>> n.bit_count() + 3 + >>> (-n).bit_count() + 3 + + Equivalent to:: + + def bit_count(self): + return bin(self).count("1") + + .. versionadded:: 3.10 + .. method:: int.to_bytes(length, byteorder, \*, signed=False) Return an array of bytes representing an integer. diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst index 34a09fe..8a6b021 100644 --- a/Doc/whatsnew/3.10.rst +++ b/Doc/whatsnew/3.10.rst @@ -70,6 +70,9 @@ Summary -- Release highlights New Features ============ +* The :class:`int` type has a new method :meth:`int.bit_count`, returning the + number of ones in the binary expansion of a given integer, also known + as the population count. (Contributed by Niklas Fiekas in :issue:`29882`.) Other Language Changes |