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