mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
_PyLong_NumBits(): The definition of this was too specific to the quirky
needs of pickling longs. Backed off to a definition that's much easier to understand. The pickler will have to work a little harder, but other uses are more likely to be correct <0.5 wink>. _PyLong_Sign(): New teensy function to characterize a long, as to <0, ==0, or >0.
This commit is contained in:
parent
89fc4f3e56
commit
5b8132ffa3
3 changed files with 55 additions and 34 deletions
|
@ -44,11 +44,17 @@ PyAPI_FUNC(PyObject *) PyLong_FromString(char *, char **, int);
|
|||
PyAPI_FUNC(PyObject *) PyLong_FromUnicode(Py_UNICODE*, int, int);
|
||||
#endif
|
||||
|
||||
/* _PyLong_NumBits. Return the number of bits needed to represent a long
|
||||
in contiguous 2's-complement form, including 1 for the sign bit. For
|
||||
example, this returns 1 for 0, and 2 for 1 and -1. Note that the
|
||||
ceiling of this divided by 8 is the number of bytes needed by
|
||||
_PyLong_AsByteArray to store the long in 256's-complement form.
|
||||
/* _PyLong_Sign. Return 0 if v is 0, -1 if v < 0, +1 if v > 0.
|
||||
v must not be NULL, and must be a normalized long.
|
||||
There are no error cases.
|
||||
*/
|
||||
PyAPI_FUNC(int) _PyLong_Sign(PyObject *v);
|
||||
|
||||
|
||||
PyAPI_FUNC(size_t) _PyLong_NumBits(PyObject *v);
|
||||
/* _PyLong_NumBits. Return the number of bits needed to represent the
|
||||
absolute value of a long. For example, this returns 1 for 1 and -1, 2
|
||||
for 2 and -2, and 2 for 3 and -3. It returns 0 for 0.
|
||||
v must not be NULL, and must be a normalized long.
|
||||
(size_t)-1 is returned and OverflowError set if the true result doesn't
|
||||
fit in a size_t.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue