Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 15 Nov 2000 15:43:22 -0500
From:      "Louis A. Mamakos" <louie@TransSys.COM>
To:        Ruslan Ermilov <ru@FreeBSD.ORG>
Cc:        Charles Mott <cmott@scientech.com>, Archie Cobbs <archie@dellroad.org>, net@FreeBSD.ORG, Ari Suutari <ari@suutari.iki.fi>
Subject:   Re: libalias: Incremental Update of Internet Checksum 
Message-ID:  <200011152043.eAFKhMG68318@whizzo.transsys.com>
In-Reply-To: Your message of "Wed, 15 Nov 2000 18:08:42 %2B0200." <20001115180842.A11913@sunbay.com> 
References:  <Pine.BSF.4.21.0011130015100.50906-100000@carcassonne.scientech.com> <200011150315.eAF3FIG60231@whizzo.transsys.com> <20001115100407.D36400@sunbay.com> <200011151436.eAFEaHG65417@whizzo.transsys.com> <20001115172435.A9724@sunbay.com> <200011151548.eAFFmJG66031@whizzo.transsys.com> <20001115180842.A11913@sunbay.com> 

next in thread | previous in thread | raw e-mail | index | archive | help

> If the above would be true that would mean that almost all implementations
> of computing the checksum are wrong, i.e. they produce the value of 0x0000
> as a checksum when it should actually be 0xffff.  That would also mean all
> three RFCs: 1071, 1141 and 1624 are wrong.  I can't believe that!

But the thing is, both 0xffff and 0x0000 are the same value == 0.  (One is
negative zero, other other a positive zero.)   I think the authors make
an error when they conclude that the result of an addition can only be
a negative zero rather than a positive zero, but in the end it doesn't
really matter which representation of zero you use, because they are
arithmetically equal.

I think the authors of those RFCs probably had 2's complement CPUs in
mind, and were thinking about commonly used emulations of 1's complement
arithemetic operations.

> My understanding of the one's complement sum is as follows:
> 
> This is the sum (or an algorithm to compute such a sum), which produces
> the RIGHT results for items represented in one's complement form, the form
> in which negative numbers are represented by one's complements of a
> positive number.
> 
> You mentioned the books...  Can you citate from one of these books that
> states that 0xFFFF + 0x0001 in one's complement arithmetic is 0x0000
> rather than 0xFFFF?

The correct result is 0x0001, since 0xffff is -0, and -0 + 1 == 1.
0xFFFE + 0x0001 == 0, because 0xFFFE is -1 and -1 + 1 == 0.

louie



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200011152043.eAFKhMG68318>