summaryrefslogtreecommitdiffstats
path: root/Doc/reference
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2008-05-11 10:55:59 (GMT)
committerGeorg Brandl <georg@python.org>2008-05-11 10:55:59 (GMT)
commite9135ba79de0554e99589e2b1143bd16eef8d8a2 (patch)
tree949ee51f20cdcf4397b9069d3a46a8ef685af242 /Doc/reference
parent6f95ae55b151f366396e7d99b829c27f27259a89 (diff)
downloadcpython-e9135ba79de0554e99589e2b1143bd16eef8d8a2.zip
cpython-e9135ba79de0554e99589e2b1143bd16eef8d8a2.tar.gz
cpython-e9135ba79de0554e99589e2b1143bd16eef8d8a2.tar.bz2
#2147: PEP 237 changes to overflow behavior.
Diffstat (limited to 'Doc/reference')
-rw-r--r--Doc/reference/datamodel.rst51
-rw-r--r--Doc/reference/expressions.rst8
2 files changed, 30 insertions, 29 deletions
diff --git a/Doc/reference/datamodel.rst b/Doc/reference/datamodel.rst
index cc71420..bf9287c 100644
--- a/Doc/reference/datamodel.rst
+++ b/Doc/reference/datamodel.rst
@@ -175,23 +175,24 @@ Ellipsis
object: plain integer
single: OverflowError (built-in exception)
- These represent numbers in the range -2147483648 through 2147483647. (The range
- may be larger on machines with a larger natural word size, but not smaller.)
- When the result of an operation would fall outside this range, the result is
- normally returned as a long integer (in some cases, the exception
- :exc:`OverflowError` is raised instead). For the purpose of shift and mask
- operations, integers are assumed to have a binary, 2's complement notation using
- 32 or more bits, and hiding no bits from the user (i.e., all 4294967296
- different bit patterns correspond to different values).
+ These represent numbers in the range -2147483648 through 2147483647.
+ (The range may be larger on machines with a larger natural word size,
+ but not smaller.) When the result of an operation would fall outside
+ this range, the result is normally returned as a long integer (in some
+ cases, the exception :exc:`OverflowError` is raised instead). For the
+ purpose of shift and mask operations, integers are assumed to have a
+ binary, 2's complement notation using 32 or more bits, and hiding no
+ bits from the user (i.e., all 4294967296 different bit patterns
+ correspond to different values).
Long integers
.. index:: object: long integer
- These represent numbers in an unlimited range, subject to available (virtual)
- memory only. For the purpose of shift and mask operations, a binary
- representation is assumed, and negative numbers are represented in a variant of
- 2's complement which gives the illusion of an infinite string of sign bits
- extending to the left.
+ These represent numbers in an unlimited range, subject to available
+ (virtual) memory only. For the purpose of shift and mask operations, a
+ binary representation is assumed, and negative numbers are represented
+ in a variant of 2's complement which gives the illusion of an infinite
+ string of sign bits extending to the left.
Booleans
.. index::
@@ -199,20 +200,22 @@ Ellipsis
single: False
single: True
- These represent the truth values False and True. The two objects representing
- the values False and True are the only Boolean objects. The Boolean type is a
- subtype of plain integers, and Boolean values behave like the values 0 and 1,
- respectively, in almost all contexts, the exception being that when converted to
- a string, the strings ``"False"`` or ``"True"`` are returned, respectively.
+ These represent the truth values False and True. The two objects
+ representing the values False and True are the only Boolean objects.
+ The Boolean type is a subtype of plain integers, and Boolean values
+ behave like the values 0 and 1, respectively, in almost all contexts,
+ the exception being that when converted to a string, the strings
+ ``"False"`` or ``"True"`` are returned, respectively.
.. index:: pair: integer; representation
- The rules for integer representation are intended to give the most meaningful
- interpretation of shift and mask operations involving negative integers and the
- least surprises when switching between the plain and long integer domains. Any
- operation except left shift, if it yields a result in the plain integer domain
- without causing overflow, will yield the same result in the long integer domain
- or when using mixed operands.
+ The rules for integer representation are intended to give the most
+ meaningful interpretation of shift and mask operations involving negative
+ integers and the least surprises when switching between the plain and long
+ integer domains. Any operation, if it yields a result in the plain
+ integer domain, will yield the same result in the long integer domain or
+ when using mixed operands. The switch between domains is transparent to
+ the programmer.
:class:`numbers.Real` (:class:`float`)
.. index::
diff --git a/Doc/reference/expressions.rst b/Doc/reference/expressions.rst
index c148533..1a43599 100644
--- a/Doc/reference/expressions.rst
+++ b/Doc/reference/expressions.rst
@@ -944,11 +944,9 @@ by the number of bits given by the second argument.
.. index:: exception: ValueError
-A right shift by *n* bits is defined as division by ``pow(2,n)``. A left shift
-by *n* bits is defined as multiplication with ``pow(2,n)``; for plain integers
-there is no overflow check so in that case the operation drops bits and flips
-the sign if the result is not less than ``pow(2,31)`` in absolute value.
-Negative shift counts raise a :exc:`ValueError` exception.
+A right shift by *n* bits is defined as division by ``pow(2, n)``. A left shift
+by *n* bits is defined as multiplication with ``pow(2, n)``. Negative shift
+counts raise a :exc:`ValueError` exception.
.. _bitwise: