From: Ludovic Brenta <ludovic.brenta@insalien.org>
Subject: Re: shifting bits
Date: Sun, 29 Aug 2004 13:29:44 +0200
Date: 2004-08-29T13:31:03+02:00 [thread overview]
Message-ID: <87eklqfahj.fsf@insalien.org> (raw)
In-Reply-To: ba2f9c57.0408281738.61a48643@posting.google.com
Fabio de Francesco writes:
> Hello.
>
> I had to pack/unpack some variables into/from one. In order to get the
> result I chose to shift the variables' bits using multiplications and
> divisions by powers of two.
Others have responded to the modular type part of your question, but I
suspect that modular types and shifting is not the best way to solve
your problem. In Ada, you can express your problem much more cleanly,
using representation clauses:
procedure Packed_Date is
type Day_Type is range 1 .. 31;
for Day_Type'Size use 5;
type Month_Type is range 1 .. 12;
for Month_Type'Size use 4;
type Year_Type is range 1900 .. 2099;
for Year_Type'Size use 11;
type Date_Type is record
Day : Day_Type;
Month : Month_Type;
Year : Year_Type;
end record;
for Date_Type use record
Day at 0 range 0 .. 4;
Month at 0 range 5 .. 8;
Year at 0 range 9 .. 19;
end record;
for Date_Type'Size use 20;
Year, Month, Day : Integer;
Date : Date_Type;
begin
Get (Year);
Date.Year := Year_Type (Year);
Get (Month);
Date.Month := Month_Type (Month);
Get (Day);
Date.Day := Day_Type (Day);
end Packed_Date;
The philosophy in Ada is: say what you want, and let the compiler do
the dirty work for you.
--
Ludovic Brenta.
next prev parent reply other threads:[~2004-08-29 11:29 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-08-29 1:38 shifting bits fabio de francesco
2004-08-29 3:51 ` Jim Rogers
2004-08-29 6:51 ` Martin Krischik
2004-08-29 12:53 ` fabio de francesco
2004-08-29 13:21 ` Ludovic Brenta
2004-08-29 17:58 ` Simon Wright
2004-08-29 14:25 ` Michael Bode
2004-08-29 11:29 ` Ludovic Brenta [this message]
2004-08-29 17:17 ` tmoran
2004-08-29 13:53 ` Stephen Leake
2004-08-29 17:17 ` tmoran
2004-08-30 3:49 ` fabio de francesco
2004-08-30 4:16 ` tmoran
2004-08-31 0:22 ` fabio de francesco
2004-10-10 17:51 ` ACM Queue Ada article tmoran
2004-10-11 13:13 ` Marc A. Criley
2004-10-12 18:32 ` skidmarks
2004-11-30 18:04 ` SIGAda ad tmoran
2005-05-25 7:19 ` Gnat STORAGE_ERROR tmoran
2005-05-25 8:53 ` Alex R. Mosteo
2005-05-25 9:51 ` Duncan Sands
2005-05-25 10:05 ` Alex R. Mosteo
2005-05-25 11:32 ` Duncan Sands
2005-05-25 12:16 ` Alex R. Mosteo
2005-05-26 9:39 ` Duncan Sands
2005-05-26 9:53 ` Alex R. Mosteo
2005-05-26 19:32 ` Björn Persson
2005-05-25 18:30 ` tmoran
2005-05-26 2:19 ` David C. Hoos, Sr.
2005-05-26 18:42 ` tmoran
2005-05-27 7:19 ` workaround, was " tmoran
2005-07-29 21:08 ` shifting bits tmoran
2005-07-30 20:28 ` Ada utility for Google Earth, NASA World Wind tmoran
2005-08-08 13:27 ` Marc A. Criley
2005-08-08 21:08 ` tmoran
2005-08-10 8:11 ` Rob Norris
2005-08-10 8:35 ` tmoran
2005-08-10 11:41 ` Rob Norris
2005-08-10 18:05 ` tmoran
2004-08-30 9:03 ` shifting bits Ole-Hjalmar Kristensen
2004-08-30 11:37 ` Dale Stanbrough
2004-08-30 18:38 ` Jeffrey Carter
2004-08-30 15:19 ` Martin Krischik
2004-08-30 17:17 ` Georg Bauhaus
2004-08-30 18:48 ` Jeffrey Carter
2004-08-31 12:37 ` Georg Bauhaus
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox