comp.lang.ada
 help / color / mirror / Atom feed
From: Ludovic Brenta <ludovic.brenta@insalien.org>
Subject: Re: shifting bits
Date: Sun, 29 Aug 2004 15:21:09 +0200
Date: 2004-08-29T15:22:29+02:00	[thread overview]
Message-ID: <87d61a5bcq.fsf@insalien.org> (raw)
In-Reply-To: ba2f9c57.0408290453.cd3d2fc@posting.google.com

Fabio de Francesco writes:
> Talking about C/C++ you may want to shift a signed numeric variable
> one position by one to the right in order to either inspect or print
> each single bit that composes the number.

In Ada, you would to an Unchecked_Conversion to an array of bits, and
access each bit by position number.  You can do that from any type.

> In low-level code, If you know what you are shifting and why, you
> won't have any bad result. May be that I'm used to Assembly where
> you often do shifting with every type of value for the most
> unthinkable reason.

In assembler, you can only do bit-shifting on data types that have a
"natural" size for your hardware (e.g. 8, 16, 32 and 64 bits).

Ada allows you to have types with arbitrary sizes, in particular when
embedding them into records, as in my earlier example where the Month
is on 4 bits, Day on 5 bits and Year on 11 bits.

This is why, in Ada, the bit-shifting operations are only defined (in
package Interfaces) for certain sizes on modular types, corresponding
to the target hardware's "natural" sizes.

-- 
Ludovic Brenta.



  reply	other threads:[~2004-08-29 13:21 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 [this message]
2004-08-29 17:58       ` Simon Wright
2004-08-29 14:25     ` Michael Bode
2004-08-29 11:29 ` Ludovic Brenta
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