From: Pascal Obry <pascal@obry.net>
To: Georg Bauhaus <rm.dash-bauhaus@futureapps.de>
Subject: Re: highest bit, statically determined
Date: Sat, 29 Sep 2012 20:11:11 +0200
Date: 2012-09-29T20:11:11+02:00 [thread overview]
Message-ID: <506739BF.20407@obry.net> (raw)
In-Reply-To: <50673111$0$9505$9b4e6d93@newsspool1.arcor-online.net>
Georg,
> 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))))))));
if N > 128 then
return 8;
elsif N > 64
return 7;
elsif ...
elsif N > 0 then
return 1;
end if;
Pascal.
--
--|------------------------------------------------------
--| Pascal Obry Team-Ada Member
--| 45, rue Gabriel Peri - 78114 Magny Les Hameaux FRANCE
--|------------------------------------------------------
--| http://www.obry.net - http://v2p.fr.eu.org
--| "The best way to travel is by means of imagination"
--|
--| gpg --keyserver keys.gnupg.net --recv-key F949BD3B
next prev parent reply other threads:[~2012-09-29 18:11 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-29 17:34 highest bit, statically determined Georg Bauhaus
2012-09-29 18:11 ` Pascal Obry [this message]
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
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox