- Bit operations in Component Pascal

From: Campbell, Robert D (UK Edinburgh) <"Campbell,>
Date: Wed, 30 Mar 2005 15:16:14 +0100

----boundary-LibPST-iamunique-1748618304_-_-
Content-type: text/plain


Andrew

Without testing, I guess that you need to
do something to ensure that your

 "2 * MIN(INTEGER)"

is evaluated using 64 bits (LONGINTs).


The 'dirtiest' solution so far may be:

VAR
  t, s : SET
BEGIN
  t := {}; (* Essential *)
  s := {31); (* Or whatever *)
  RETURN SYSTEM.VAL (LONGINT, s) / 4294967295.
END;


This stuff is taking the 'convenience' of
SETs to the borders of sanity, if not beyond.

R


>> Hei All,
>>

>> ORD({31]) = MIN(INTEGER)
>>

>> ORD({0..31}) = -1
>>

>> etc if I remember right.
>>

>> Now in C a unsigned integer is used for sets. So in C {31}

>> regarded as an
>> unsigned integer has a different value from value to

>> ORD({31}) in CP.
>>

>> return( (double) y / (unsigned long) 0xffffffff) in C where

>> y is a set would
>> translate into something like
>>

>> int := ORD(y);
>> IF int < 0 THEN
>> RETURN (int - 2 * MIN(INTEGER)) / 4294967295
>> ELSE
>> RETURN int / 4294967295
>> END
>>

>> Andrew

********************************************************************
This email and any attachments are confidential to the intended
recipient and may also be privileged. If you are not the intended
recipient please delete it from your system and notify the sender.
You should not copy it or use it for any purpose nor disclose or
distribute its contents to any other person.
********************************************************************

--- BlackBox
--- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy



----boundary-LibPST-iamunique-1748618304_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwIFxwYXINCkFuZHJld1xwYXINClxwYXINCldpdGhv
dXQgdGVzdGluZywgSSBndWVzcyB0aGF0IHlvdSBuZWVkIHRvXHBhcg0KZG8gc29tZXRoaW5nIHRv
IGVuc3VyZSB0aGF0IHlvdXJccGFyDQpccGFyDQogIjIgKiBNSU4oSU5URUdFUikiXHBhcg0KXHBh
cg0KaXMgZXZhbHVhdGVkIHVzaW5nIDY0IGJpdHMgKExPTkdJTlRzKS5ccGFyDQpccGFyDQpccGFy
DQpUaGUgJ2RpcnRpZXN0JyBzb2x1dGlvbiBzbyBmYXIgbWF5IGJlOlxwYXINClxwYXINClZBUlxw
YXINCiAgdCwgcyA6IFNFVFxwYXINCkJFR0lOXHBhcg0KICB0ICA6PSBce1x9OyAgICAgKCogIEVz
c2VudGlhbCAgKilccGFyDQogIHMgIDo9ICBcezMxKTsgICgqICBPciB3aGF0ZXZlciAgKilccGFy
DQogIFJFVFVSTiAgU1lTVEVNLlZBTCAoTE9OR0lOVCwgcykgLyA0Mjk0OTY3Mjk1LlxwYXINCkVO
RDtccGFyDQpccGFyDQpccGFyDQpUaGlzIHN0dWZmIGlzIHRha2luZyB0aGUgJ2NvbnZlbmllbmNl
JyBvZlxwYXINClNFVHMgdG8gdGhlIGJvcmRlcnMgb2Ygc2FuaXR5LCBpZiBub3QgYmV5b25kLlxw
YXINClxwYXINClJccGFyDQpccGFyDQpccGFyDQo+PiAgSGVpIEFsbCxccGFyDQo+PiBccGFyDQpc
cGFyDQo+PiAgT1JEKFx7MzFdKSA9IE1JTihJTlRFR0VSKVxwYXINCj4+IFxwYXINClxwYXINCj4+
ICBPUkQoXHswLi4zMVx9KSA9IC0xXHBhcg0KPj4gXHBhcg0KXHBhcg0KPj4gIGV0YyBpZiBJIHJl
bWVtYmVyIHJpZ2h0LlxwYXINCj4+IFxwYXINClxwYXINCj4+ICBOb3cgaW4gQyBhIHVuc2lnbmVk
IGludGVnZXIgaXMgdXNlZCBmb3Igc2V0cy4gU28gaW4gQyBcezMxXH1ccGFyDQpccGFyDQo+PiAg
cmVnYXJkZWQgYXMgYW5ccGFyDQo+PiAgdW5zaWduZWQgaW50ZWdlciBoYXMgYSBkaWZmZXJlbnQg
dmFsdWUgZnJvbSB2YWx1ZSB0b1xwYXINClxwYXINCj4+ICBPUkQoXHszMVx9KSBpbiBDUC5ccGFy
DQo+PiBccGFyDQpccGFyDQo+PiAgcmV0dXJuKCAoZG91YmxlKSB5IC8gKHVuc2lnbmVkIGxvbmcp
IDB4ZmZmZmZmZmYpIGluIEMgd2hlcmVccGFyDQpccGFyDQo+PiAgeSBpcyBhIHNldCB3b3VsZFxw
YXINCj4+ICB0cmFuc2xhdGUgaW50byBzb21ldGhpbmcgbGlrZVxwYXINCj4+IFxwYXINClxwYXIN
Cj4+ICBpbnQgOj0gT1JEKHkpO1xwYXINCj4+ICBJRiBpbnQgPCAwIFRIRU5ccGFyDQo+PiAgICAg
IFJFVFVSTiAoaW50IC0gMiAqIE1JTihJTlRFR0VSKSkgLyA0Mjk0OTY3Mjk1XHBhcg0KPj4gIEVM
U0VccGFyDQo+PiAgICAgIFJFVFVSTiBpbnQgLyA0Mjk0OTY3Mjk1XHBhcg0KPj4gIEVORFxwYXIN
Cj4+IFxwYXINClxwYXINCj4+ICBBbmRyZXdccGFyDQpccGFyDQoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxwYXINClRo
aXMgZW1haWwgYW5kIGFueSBhdHRhY2htZW50cyBhcmUgY29uZmlkZW50aWFsIHRvIHRoZSBpbnRl
bmRlZFxwYXINCnJlY2lwaWVudCBhbmQgbWF5IGFsc28gYmUgcHJpdmlsZWdlZC4gSWYgeW91IGFy
ZSBub3QgdGhlIGludGVuZGVkXHBhcg0KcmVjaXBpZW50IHBsZWFzZSBkZWxldGUgaXQgZnJvbSB5
b3VyIHN5c3RlbSBhbmQgbm90aWZ5IHRoZSBzZW5kZXIuXHBhcg0KWW91IHNob3VsZCBub3QgY29w
eSBpdCBvciB1c2UgaXQgZm9yIGFueSBwdXJwb3NlIG5vciBkaXNjbG9zZSBvclxwYXINCmRpc3Ry
aWJ1dGUgaXRzIGNvbnRlbnRzIHRvIGFueSBvdGhlciBwZXJzb24uXHBhcg0KKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipc
cGFyDQpccGFyDQotLS0gQmxhY2tCb3hccGFyDQotLS0gc2VuZCBzdWJqZWN0IEhFTFAgb3IgVU5T
VUJTQ1JJQkUgdG8gYmxhY2tib3hAb2Jlcm9uLmNofX0ASGVpEMBsbIYsQA=


----boundary-LibPST-iamunique-1748618304_-_---
Received on Wed Mar 30 2005 - 15:16:14 UTC

This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:28:19 UTC