Marshall wrote:
>  (negative MSB) version is mathematically more well-founded

I am personally not qualified to assess the mathematical virtues of the
different formulations.  And I see (more than) enough mathematical
horsepower on these Forums to be confident that a sensible conclusion will
be reached, irrespective of my (mostly uninformed) opinions.  And I'll
certainly be comfortable with that conclusion, whatever shape it takes. 

Plus, your solution is already gaining support, as Henry said:

>  I like your leading-digit-negative idea better too.

But I'm still a bit reluctant, and the reason is along the lines of
something Henry said earlier:

>  you can't tell how to interpret a bit-string without 
>  knowing whether it is signed or unsigned.  You can't 
>  tell by looking at the bits.

That is, sign is an extrinsic quality of a number. Put another way, an
integer has two qualities: sign and magnitude*.  So, since the digits of a
number are reserved for expressing magnitude, I think sign should be carried
out-of-band (not cleverly encoded in those bits).

Now, in a sense, the negative-MSB approach does use out-of-band information.
In particular, the "negativity" of the MSB is out-of-band information, that
couldn't be carried in a true digit.  That said, it has two drawbacks:

        1.  It singles out the MSB as "special".  If one argues 
          "Hey, the MSB _is_ special: did you see that 'M' in
           there?", my counterargument would be "well, yes, 
           but that M-ness is already encoded in the bit's
           position, which is the correct -and only- way to
           do it".

        2.  It introduces a new order-of-magnitude, which wasn't
          there before.  That is, in order to address a value
          on order r^N, we all of a sudden had to talk about 
          values on the order of r^N+1 .  Feels like a
          non-sequitor.

Now, (1) is a fundamental aspect of the negative-MSB approach, but if
Henry's right when he says:

>  Rather than prepending a leading _1, you could just change 
>  the high-order 1 to _1 .

then (2) is just an aspect of a particular formulation.  And actually, the
critical issue (3) from my earlier message goes away too (i.e. the sign of a
value is unrelated to the number of its digits).  But either I misunderstand
him, or I can't get it to work:

           #: 5
        1 0 1
           #.  _1 0 1  NB.  negate MSB, but don't change length of vector
        _3

But anyway, even if this, or something like it, worked, it would still
offend my formed-in-first-grade arithmetical sensibilities.  It just doesn't
seem right for a numeric notation to say "First, you start really low, then
you add values in bits and pieces, til you get closer (but never all the
way) to zero".  
           
-Dan

*  Or I guess you could say a real number has a quality and a quantity.


----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to