Is signed zero always available?

Grant Edwards grant.b.edwards at gmail.com
Wed Jun 22 22:48:52 EDT 2016


On 2016-06-22, Christopher Reimer <christopher_reimer at icloud.com> wrote:
>> On Jun 22, 2016, at 7:59 AM, Grant Edwards <grant.b.edwards at gmail.com> wrote:
>> 
>>> On 2016-06-22, Random832 <random832 at fastmail.com> wrote:
>>>> On Wed, Jun 22, 2016, at 10:19, Grant Edwards wrote:
>>>> 
>>>> Is that guaranteed by Python, or just a side-effect of the
>>>> implementation?  Back in the days when Python used native C
>>>> integers I think the latter.
>>> 
>>> AIUI, native C integers have never reliably supported signed zero
>>> even with representations that naively seem to have it. There's no
>>> well-defined way to detect it - no int version of copysign, for
>>> instance - and implementations are free to erase the distinction on
>>> every load/store or define one of them to be a trap representation.
>> 
>> It's been almost 25 years since I used hardware that supported signed
>> zero integers (CDC 6600).  I don't recall there being a C compiler
>> available.  We used Pascal and assembly, though I think FORTRAN was
>> what most people used.  I don't recall whether the Pascal
>> implementation exposed the existence of -0 to the user or not.
>
> When I took mathematics in college, the following was true:
>
> -1 * 0 = 0

Well, we're talking about computers and programming languages, not
mathematics.

> I would probably have gotten rapped on the knuckles by my instructors
> if I answered -0. Zero was zero. No plus or minus about that. No
> discussion of signed integers ever mentioned signed zero.
>
> Did I miss something in college?

If you took computer architecture courses, then yes, you missed the
chapters on machine representation of integers.  If you build a CPU
that uses either 1's compliment or signed magnitude representations
then there is a postive zero and a negative zero.  If you design it to
use 2's complement, then there is only a positive zero.

1's complement and signed-magnitude are excedingly rare these days,
but used to be much more common.

-- 
Grant






More information about the Python-list mailing list