In our previous episode, Martin said: > 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);
You are redoing what Wirth did 32 years ago. Pascal's successor, Modula2 does exactly that. (though bitwise operations on integers was a very common extension) _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel