home *** CD-ROM | disk | FTP | other *** search
/ Chip 1995 March / CHIP3.mdf / programm / prog4 / answers / ch30_2.ada < prev   
Encoding:
Text File  |  1991-07-01  |  1.6 KB  |  57 lines

  1.                        -- Chapter 30 - Programming exercise 2
  2. with Text_IO, Unchecked_Conversion;
  3. use Text_IO;
  4.  
  5. procedure CH30_2 is
  6.  
  7.    package Int_IO is new Text_IO.Integer_IO(INTEGER);
  8.    use Int_IO;
  9.    package Flt_IO is new Text_IO.Float_IO(FLOAT);
  10.    use Flt_IO;
  11.  
  12.    NUMBER_OF_BYTES : constant := 4;
  13.  
  14.    type CHAR_ARRAY is array(1..NUMBER_OF_BYTES) of CHARACTER;
  15.  
  16.    Split_Array : CHAR_ARRAY;
  17.    Float_Data  : FLOAT := 1.0;
  18.  
  19.    function Switch_To_Bits is new Unchecked_Conversion(
  20.                                    Source => FLOAT,
  21.                                    Target => CHAR_ARRAY);
  22.  
  23. begin
  24.  
  25.    for Index in 1..8 loop
  26.       Split_Array := Switch_To_Bits(Float_Data);
  27.       Put("Float_Data =");
  28.       Put(Float_Data,6,2,0);
  29.       Put("   Split_Array =");
  30.       for Count in 1..NUMBER_OF_BYTES loop
  31.          Put(CHARACTER'POS(Split_Array(Count)),4);
  32.       end loop;
  33.       New_Line;
  34.       Float_Data := Float_Data * 2.0;
  35.    end loop;
  36.  
  37. end CH30_2;
  38.  
  39.  
  40.  
  41.  
  42. -- Result of Execution
  43.  
  44. -- Float_Data =     1.00   Split_Array =    0   0 128  63
  45. -- Float_Data =     2.00   Split_Array =    0   0   0  64
  46. -- Float_Data =     4.00   Split_Array =    0   0 128  64
  47. -- Float_Data =     8.00   Split_Array =    0   0   0  65
  48. -- Float_Data =    16.00   Split_Array =    0   0 128  65
  49. -- Float_Data =    32.00   Split_Array =    0   0   0  66
  50. -- Float_Data =    64.00   Split_Array =    0   0 128  66
  51. -- Float_Data =   128.00   Split_Array =    0   0   0  67
  52.  
  53. -- Note that the fields are apparently reversed because of the
  54. --   way the bytes are stored in the microprocessor used for this
  55. --   example program.
  56.  
  57.