diff options
author | Georg Brandl <georg@python.org> | 2008-05-11 10:55:59 (GMT) |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2008-05-11 10:55:59 (GMT) |
commit | e9135ba79de0554e99589e2b1143bd16eef8d8a2 (patch) | |
tree | 949ee51f20cdcf4397b9069d3a46a8ef685af242 /Doc/reference | |
parent | 6f95ae55b151f366396e7d99b829c27f27259a89 (diff) | |
download | cpython-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.rst | 51 | ||||
-rw-r--r-- | Doc/reference/expressions.rst | 8 |
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: |