On Mon, 23 Apr 2007, Alan Bawden wrote:

>    Date: Tue, 17 Apr 2007 21:03:57 +0100 (BST)
>    From: Ben Harris <[EMAIL PROTECTED]>
> 
>    ...  Also, for arguments that fit in a particular word
>    size, the number of set bits in the argument represented
>    in a word of that size can be obtained by taking the
>    result modulo the word size, regardless of the sign of
>    the argument.
> 
> This can't be true.  Since the number of bits set in a
> 32-bit word (for example) can be anything from 0 to 32
> -inclusive-, it cannot be true that you can count the set
> bits by taking something mod 32.

Ah, yes, I think I got carried away with the cuteness of the idea and 
didn't bother to check it was actually true.

> If bitwise-bit-count was defined as:
> 
>   (define (bitwise-bit-count n)
>     (if (negative? n)
>       (- (+ 1 (bitwise-bit-count (bitwise-not n))))
>       <whatever>))
> 
> Then you could count the bits set in an N-bit word by taking
> the bitwise-bit-count mod N+1.  This would also make the
> claim in the subject actually true.

Indeed, and it wouldn't break the other nice property I'd produced.  It 
loses a little symmetry, in that (- (bitwise-bit-count x)) is no longer 
equal to (bitwise-bit-count (bitwise-not x)), but two's-complement 
arithmetic is inherently asymmetric like this, so I'm not sure that's a 
bad thing.

-- 
Ben Harris

_______________________________________________
r6rs-discuss mailing list
[email protected]
http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss

Reply via email to