comp.lang.ada
 help / color / mirror / Atom feed
From: Georg Bauhaus <rm.dash-bauhaus@futureapps.de>
Subject: Re: How to put 200 into an integer sub-type of 16 bits (code included)
Date: Thu, 15 Jan 2009 11:29:58 +0100
Date: 2009-01-15T11:29:59+01:00	[thread overview]
Message-ID: <496f1027$0$31347$9b4e6d93@newsspool4.arcor-online.net> (raw)
In-Reply-To: <fc154f52-7168-447a-bcd3-6ece9066ebf7@r37g2000prr.googlegroups.com>

ChristopherL schrieb:
> On Jan 14, 12:41 pm, Adam Beneschan <a...@irvine.com> wrote:
>>  Which
>> bits do you want to copy? 
> 
> The ones containing the mantissa.

OK, here is some code to extract the exponent.

BTW,  consider giving the reference when you
quote from Wikipedia.
In this case the "general info" seems to have been pasted from
http://en.wikipedia.org/wiki/Floating_point#Internal_representation


with Interfaces;
with Ada.Unchecked_Conversion, Ada.Text_IO;

procedure Th is

   use Ada;

   Arg: Float;
   pragma Assert(Float'Size = 32);

   The_Bits : Interfaces.Unsigned_32;

   function Just_The_Bits is
      new Unchecked_Conversion (Source => Float,
                                Target => Interfaces.Unsigned_32);

   Result: Interfaces.Unsigned_8;

   package Bit_IO_8 is new Text_IO.Modular_IO (Interfaces.Unsigned_8);
   package Bit_IO_32 is new Text_IO.Modular_IO (Interfaces.Unsigned_32);

begin
   Arg := 200.0;
   The_Bits := Just_The_Bits(Arg);

   Text_IO.Put("starting from float ");
   Bit_IO_32.Put(The_Bits, Base => 2);
   Text_IO.Put_Line(" of bit size" & Natural'Image(Float'Size) & ",");
   Text_IO.Put_Line("for " & Float'Image(Arg) & ", bits 24 .. 31 give");

   The_Bits := Interfaces.Shift_Right(The_Bits, 23);
   Result := Interfaces.Unsigned_8(The_Bits);

   declare
      use type Interfaces.Unsigned_8;
   begin
      Bit_IO_8.Default_Width := 0;

      Text_IO.Put("decimal "); Bit_IO_8.Put(Result);
      Text_IO.Put(", that's "); Bit_IO_8.Put(Result - 127);
      Text_IO.Put_Line(" without bias");

      Text_IO.Put("binary "); Bit_IO_8.Put(Result, Base => 2);
      Text_IO.Put(", or ");  Bit_IO_8.Put(Result - 127, Base => 2);
      Text_IO.Put_Line(" without bias.");
   end;
end Th;



  parent reply	other threads:[~2009-01-15 10:29 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <407ae64d-3cb3-4310-b59e-f1bbae9910a5@t39g2000prh.googlegroups.com>
2009-01-14  1:33 ` How to put 200 into an integer sub-type of 16 bits (code included) Brian Drummond
     [not found]   ` <3d3719f4-355c-4094-9902-495d612d46fe@n33g2000pri.googlegroups.com>
2009-01-14  9:06     ` Ludovic Brenta
2009-01-14 10:08     ` Georg Bauhaus
2009-01-14 10:29       ` Georg Bauhaus
2009-01-14 12:47     ` Brian Drummond
2009-01-14 12:53     ` Brian Drummond
     [not found]       ` <f4894476-851e-493f-93a2-168976bd97fb@s1g2000prg.googlegroups.com>
2009-01-14 16:08         ` Adam Beneschan
     [not found]           ` <139961e9-bae6-4e60-8ff7-4f4779b27481@z6g2000pre.googlegroups.com>
2009-01-14 20:41             ` Adam Beneschan
     [not found]               ` <c265ffb7-6159-4d85-b259-78b830e115f9@v18g2000pro.googlegroups.com>
2009-01-15  2:39                 ` SteveD@teranews.com
     [not found]               ` <3625f980-4406-4f51-b494-dd4a48cab840@p36g2000prp.googlegroups.com>
2009-01-15  6:53                 ` Michael Bode
2009-01-15  8:57                   ` Martin
     [not found]               ` <1a2b31ac-cf6b-44e3-85b7-04594460db87@d36g2000prf.googlegroups.com>
2009-01-14 22:47                 ` Adam Beneschan
2009-01-14 23:11                 ` Ludovic Brenta
2009-01-15  9:56                 ` Stuart
2009-01-15 12:40                 ` Stuart
2009-01-15 14:02                 ` Stephen Leake
2009-01-15 15:54                   ` Dmitry A. Kazakov
2009-01-15 16:29                     ` Hyman Rosen
2009-01-15 22:15                       ` Dmitry A. Kazakov
2009-01-16  9:11                         ` Jacob Sparre Andersen
2009-01-16 11:03                           ` Mike H
2009-01-16 22:16                           ` Brian Drummond
     [not found]               ` <fc154f52-7168-447a-bcd3-6ece9066ebf7@r37g2000prr.googlegroups.com>
2009-01-15 10:29                 ` Georg Bauhaus [this message]
2009-01-14 21:32             ` sjw
2009-01-14 21:51             ` Brian Drummond
2009-01-14 21:17           ` sjw
2009-01-14 18:49     ` Jeffrey R. Carter
2009-01-15 10:12       ` Quote of the Day (Re: " Peter Hermann
2009-01-14 21:09   ` sjw
2009-01-14 21:16     ` Adam Beneschan
2009-01-14 23:09       ` Martin
2009-01-15  0:07         ` Adam Beneschan
2009-01-15  3:09           ` Randy Brukardt
2009-01-15 16:28             ` Adam Beneschan
2009-01-15 21:21               ` Robert A Duff
2009-01-16  1:17                 ` Adam Beneschan
2009-01-16 14:55                   ` Robert A Duff
2009-01-15 14:44     ` Brian Drummond
     [not found]       ` <3f1f2f67-5d69-4baf-8e8c-0d2b5f68475f@p36g2000prp.googlegroups.com>
2009-01-15 16:36         ` How to put 200.0 (is float variable of 32 bits) into an integer sub-type of 10 bits (complete program included) Adam Beneschan
     [not found]         ` <8e64f509-f6fe-4d86-ae1a-fe0b1c88555a@v5g2000pre.googlegroups.com>
2009-01-15 17:09           ` christoph.grein
2009-01-15 17:17             ` Adam Beneschan
2009-01-15 17:29               ` Georg Bauhaus
     [not found]                 ` <09b4a056-688d-49c8-b935-fa0b30f1ae84@w1g2000prk.googlegroups.com>
2009-01-15 18:40                   ` Mike H
     [not found]                     ` <be26729d-9458-42fa-8c8c-004ca33b790d@f33g2000vbf.googlegroups.com>
2009-01-15 20:57                       ` Niklas Holsti
     [not found]                 ` <97231951-54a0-4df7-bb73-04261b34287f@e6g2000vbe.googlegroups.com>
2009-01-16  3:17                   ` Steve D
     [not found]             ` <a61abb30-bc60-4d13-b298-f369ddc8f741@z6g2000pre.googlegroups.com>
2009-01-15 18:15               ` Martin
2009-01-15 18:34               ` Stuart
2009-01-15 17:23           ` Georg Bauhaus
     [not found]         ` <d3b7ad53-af51-4ac5-9167-7cb99e61b2b1@v5g2000pre.googlegroups.com>
2009-01-15 17:50           ` Stuart
     [not found] <6c7964a6-1733-434b-b1b1-962baa4ebba2@p23g2000prp.googlegroups.com>
2009-01-13 21:01 ` How to put 200 into an integer sub-type of 16 bits (code included) Ludovic Brenta
replies disabled

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