comp.lang.ada
 help / color / mirror / Atom feed
* highest bit, statically determined
@ 2012-09-29 17:34 Georg Bauhaus
  2012-09-29 18:11 ` Pascal Obry
                   ` (2 more replies)
  0 siblings, 3 replies; 28+ messages in thread
From: Georg Bauhaus @ 2012-09-29 17:34 UTC (permalink / raw)


Is there a shorter/better way of having the compiler
find the highest bit = 1 in a static numeric constant?

If N is such a constant, e.g. Some_Type'Last where
Some_Type'Size = 8 and its bound are static, then

    Highest_Bit_In_Octet : constant :=
      Natural'Max
      (8 * Boolean'Pos (N / 2**7 > 0),
       Natural'Max
       (7 * Boolean'Pos (N / 2**6 > 0),
        Natural'Max
        (6 * Boolean'Pos (N / 2**5 > 0),
         Natural'Max
         (5 * Boolean'Pos (N / 2**4 > 0),
          Natural'Max
          (4 * Boolean'Pos (N / 2**3 > 0),
           Natural'Max
           (3 * Boolean'Pos (N / 2**2 > 0),
            Natural'Max
            (2 * Boolean'Pos (N / 2**1 > 0),
             Natural'Max
             (1 * Boolean'Pos (N / 2**0 > 0), 0))))))));



^ permalink raw reply	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2012-11-04 22:00 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-09-29 17:34 highest bit, statically determined Georg Bauhaus
2012-09-29 18:11 ` Pascal Obry
2012-09-29 18:59   ` Georg Bauhaus
2012-09-29 19:18     ` Georg Bauhaus
2012-09-29 18:57 ` Bill Findlay
2012-09-29 19:16   ` Bill Findlay
2012-09-29 21:36     ` Georg Bauhaus
2012-09-29 22:06       ` Georg Bauhaus
2012-09-29 23:38       ` Bill Findlay
2012-09-30 15:01       ` Vadim Godunko
2012-11-04 20:45     ` Yannick Duchêne (Hibou57)
2012-11-04 22:00       ` Bill Findlay
2012-09-30 15:39 ` Anatoly Chernyshev
2012-09-30 18:36   ` Shark8
2012-10-01  8:07   ` Georg Bauhaus
2012-10-01  8:11     ` Georg Bauhaus
2012-10-01  8:52     ` Anatoly Chernyshev
2012-10-01 21:30       ` Georg Bauhaus
2012-10-01 22:55         ` Shark8
2012-10-01 23:25           ` Georg Bauhaus
2012-10-02 11:03         ` Brian Drummond
2012-10-03  9:30           ` kalvink65
2012-10-03 18:54             ` Georg Bauhaus
2012-10-04  7:46               ` Georg Bauhaus
2012-10-04  8:25           ` Stephen Leake
2012-10-04 10:01       ` kalvin.news
2012-10-05  7:50         ` Anatoly Chernyshev
2012-10-05  8:38           ` Anatoly Chernyshev

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox