Just to menion:

I am NOT trying to get anything changed. It works fine for me as it is.

I would however like to widen/correct my understanding of the matter

On 14/01/2013 16:03, Martin wrote:

not sure if I follow. If "or" performs on a "set of bits" (rather than a number), and a set (not being a number) is neither signed or unsigned, then before the "OR" both operands (independent of being signed or not) will be cast to a set. The result is a set. The set can be converted to either signed or unsigned. The set has no range checking.

  result := bit_set32(a) or bit_set32(b)

If result has also 32 (or more) bits, then no range check error can occur. In the set, the high-bit has no meaning. It is neither part of the (unsigned positive) numer, nor is it sign indicator. This meaning is only applied by casting it to a numeric type.

Same as
var i: set of (b0, b1, b2 .... b31);
signed := integer(i);
unsigned := cardinal(i);




_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to