From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,e8b01e86b2d0a470 X-Google-Attributes: gid103376,public From: stt@houdini.camb.inmet.com (Tucker Taft) Subject: Re: how to do bit-wise operation on none modular types? Date: 1999/03/03 Message-ID: #1/1 X-Deja-AN: 450748791 Sender: news@inmet.camb.inmet.com (USENET news) X-Nntp-Posting-Host: houdini.burl.averstar.com References: <7bj7ti$4i@drn.newsguy.com> Organization: Intermetrics, Inc. Newsgroups: comp.lang.ada Date: 1999-03-03T00:00:00+00:00 List-Id: bill@nospam wrote: : greetings, : I have an integer value that is returned from some call (its status). : I'd like to take the bit-wise "and" of this value against : another value (16#FFFF#). (i.e. in C, do: 0xffff & i) : Ada does not allow this, as both operands must be modular integer types : (i.e. range from 0 to some positive value). : what can one do? do I need to convert integer value returned from signed : to unsigned (i.e. modular)? how? Presuming the value is positive and less than the modulus of the modular type, then you can just convert it to the modular type using the normal conversion operator. E.g.: type My_Mod is mod 2**; ... My_Mod(I) and 16#ffff# ... The other more direct route is: ... I mod 16#10000# ... A good compiler will use a bit-wise and instruction when computing a "mod" with a power of 2. : cheers, : Bill. -- -Tucker Taft stt@averstar.com http://www.averstar.com/~stt/ Technical Director, Distributed IT Solutions (www.averstar.com/tools) AverStar (formerly Intermetrics, Inc.) Burlington, MA USA