From: "Steve D" <nospam_steved94@comcast.net>
Subject: Re: How to put 200.0 (is float variable of 32 bits) into an integer sub-type of 10 bits (complete program included)
Date: Thu, 15 Jan 2009 19:17:00 -0800
Date: 2009-01-15T19:17:00-08:00 [thread overview]
Message-ID: <Q_Sbl.22067$u14.4215@newsfe21.iad> (raw)
In-Reply-To: <97231951-54a0-4df7-bb73-04261b34287f@e6g2000vbe.googlegroups.com>
"ChristopherL" <clusardi2k@aol.com> wrote in message
news:97231951-54a0-4df7-bb73-04261b34287f@e6g2000vbe.googlegroups.com...
> If it is not possible to do what I want.
>
> Can someone modify the below program to show me how to set a high
> order bit of a
> 10 number number, and also maintain all other bits.
>
> procedure test2 is
>
> subtype Short_integer1 is INTEGER range -(2 ** 7)..((2 ** 7) - 1);
>
> arg:float;
> Result:Short_integer1;
>
> begin
>
> arg := 200.0
>
> if (arg > 128.0) then
>
> arg := arg - 128.0;
> --Result := ?;
>
> else
>
> Result := Short_integer1(arg);
>
> end if;
>
> end test2;
>
> In this example I would like Result to have a bit representation such
> as:
>
> 10 0100 1000
>
> If you have a simplier algorithm (implemented) please share it with
> me.
>
> Thanks,
> Chris L.
>
>
See if this does what you want:
with Interfaces;
use Interfaces;
with Ada.Unchecked_Conversion;
with Ada.Text_IO;
with Ada.Float_Text_IO;
procedure TestSteve is
subtype Short_Integer is Integer range -128..127;
package Short_Io is new Ada.Text_Io.Integer_IO( Short_Integer );
package Unsigned_8_Io is new Ada.Text_Io.Modular_IO( Unsigned_8 );
function Float_To_Short_Integer( value : float ) return Short_Integer is
function Conv is new Ada.Unchecked_Conversion( Unsigned_8,
Short_Integer );
begin
return Conv( Unsigned_8( value ) );
end Float_To_Short_Integer;
procedure TestValue( value : float ) is
result : Short_Integer;
function Conv is new Ada.Unchecked_Conversion( Short_Integer, Unsigned_8 );
begin
result := Float_To_Short_Integer( value );
Ada.Float_Text_IO.Put( value, 3, 1, 0 );
Ada.Text_IO.Put( " => ");
Short_IO.Put( Float_To_Short_Integer( value ) );
Ada.Text_IO.Put( " => ");
Unsigned_8_IO.Put( Conv( Float_To_Short_Integer( value ) ), 4, 2 );
Ada.Text_IO.New_Line;
end TestValue;
begin
TestValue( 0.0 );
TestValue( 127.0);
TestValue( 200.5 );
end TestSteve;
Output:
0.0 => 0 => 2#0#
127.0 => 127 => 2#1111111#
200.5 => -55 => 2#11001001#
Regards,
Steve
next prev parent reply other threads:[~2009-01-16 3:17 UTC|newest]
Thread overview: 51+ 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
2009-01-14 21:17 ` sjw
[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
2009-01-14 21:32 ` sjw
2009-01-14 21:51 ` Brian Drummond
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 [this message]
[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
2009-01-15 20:48 Martin
[not found] ` <8a7769ad-133f-4587-9239-34ce90978aa1@v38g2000yqb.googlegroups.com>
2009-01-22 1:30 ` Keith Thompson
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox