bpo-29710: Clarify documentation for Bitwise binary operation (GH-1691) · python/cpython@8764a6f (original) (raw)
`@@ -382,7 +382,7 @@ modules.
`
382
382
`.. _bitstring-ops:
`
383
383
``
384
384
`Bitwise Operations on Integer Types
`
385
``
`-
`
``
385
`+
`
386
386
``
387
387
`.. index::
`
388
388
` triple: operations on; integer; types
`
`@@ -396,9 +396,9 @@ Bitwise Operations on Integer Types
`
396
396
` operator: >>
`
397
397
` operator: ~
`
398
398
``
399
``
`-
Bitwise operations only make sense for integers. Negative numbers are treated
`
400
``
`-
as their 2's complement value (this assumes that there are enough bits so that
`
401
``
`-
no overflow occurs during the operation).
`
``
399
`+
Bitwise operations only make sense for integers. The result of bitwise
`
``
400
`+
operations is calculated as though carried out in two's complement with an
`
``
401
`+
infinite number of sign bits.
`
402
402
``
403
403
`The priorities of the binary bitwise operations are all lower than the numeric
`
404
404
``` operations and higher than the comparisons; the unary operation ~
has the
`@@ -409,13 +409,13 @@ This table lists the bitwise operations sorted in ascending priority:
`
`409`
`409`
`+------------+--------------------------------+----------+
`
`410`
`410`
`| Operation | Result | Notes |
`
`411`
`411`
`+============+================================+==========+
`
`412`
``
``` -
| ``x | y`` | bitwise :dfn:`or` of *x* and | |
``
412
| ``x | y`` | bitwise :dfn:`or` of *x* and | (4) |
413
413
`| | y | |
`
414
414
`+------------+--------------------------------+----------+
`
415
``
| ``x ^ y`` | bitwise :dfn:`exclusive or` of | |
``
415
| ``x ^ y`` | bitwise :dfn:`exclusive or` of | (4) |
416
416
`| | x and y | |
`
417
417
`+------------+--------------------------------+----------+
`
418
``
| ``x & y`` | bitwise :dfn:`and` of *x* and | |
``
418
| ``x & y`` | bitwise :dfn:`and` of *x* and | (4) |
419
419
`| | y | |
`
420
420
`+------------+--------------------------------+----------+
`
421
421
``` | x << n
| x shifted left by n bits | (1)(2) |
`@@ -438,6 +438,12 @@ Notes:
`
`438`
`438`
``` A right shift by *n* bits is equivalent to division by ``pow(2, n)`` without
439
439
` overflow check.
`
440
440
``
``
441
`+
(4)
`
``
442
`+
Performing these calculations with at least one extra sign extension bit in
`
``
443
`+
a finite two's complement representation (a working bit-width of
`
``
444
``1 + max(x.bit_length(), y.bit_length()`` or more) is sufficient to get the
``
445
`+
same result as if there were an infinite number of sign bits.
`
``
446
+
441
447
``
442
448
`Additional Methods on Integer Types
`
443
449
`-----------------------------------
`