REAL NUMBERS
Any real number can be normalized to
get
±0.XXXX.B±EXP
or
±X.XXX.B±EXP
Now XXXX and EXP are just two integers. 
Unfortunately, which B is used, which normalization is used, how many bits
used to store XXXX (mantissa)  and EXP (exponent) varies from machine
to machine.  The IEEE has set a standard to solidify this mess. 
Typical sizes used to store real numbers 32 bits (single precision), 64
bits (double precision) and 128 bits (quadruple precision).
 
 
IBM mainframe
Normalize to 0.XXXX in base 16. 
Store:
1 bit for sign. (0 is + and 1 is
-).
7 bits in exponent (in excess-64).
24 bits (6 hex digits) mantissa.
Examples
-65.2(base 10)  is stored as C2413333
+0.04296875(base 10) is stored as 3FB00000
C31A0F00 represents -416.9375(base 10)
 
IEEE Format
Used in 68000 and SPARC.  Normalize
to ±1.XXX.2±exp  Store:
1 bit for sign (0 is +)
8/11/15 bit for exponent (Excess-2N-1-1)
23/52/112 bits for mantissa
leading 1 is not stored anywhere.
Examples
-65.2 in single precision  is
stored
as C2826666.
+0.04296875 in s.p. is stored as 3D300000
C2328000 represents -44.625
How are the integer 7 and the real 7.0
stored in 4 bytes.
How are the integer -7 and the real
-7.0 stored in 4 bytes.
Special Cases in IEEE floating point
When exponent = 0000000 it means -2N-1
-2
(not -2N-1-1   as it normally would ) and a leading
0 not 1 is assumed for the exponent 0000000.  They do this to allow
for some even tinier numbers.
0  0000010  000..00 is
1.0*2-125
0  0000001  000...00 is
1.0* 2-126.
0  0000000  000...00 is
0
0  0000000  100...00 is
0.1*2-126= 1*2-127.
0  0000000  010...00 is
0.01*2-126= 1*2-128.
0  0000000  000...01 is
0.0..01*2-126= 1*2-149.
When exponent is 1111...1
+¥  
is            
             
   0  11111111  000...0
-¥ is         
           
         1  11111111  
000...0
Not a number = NaN is  X 11111111 
XXX...X   One of right-most X's not 0.
 
 
Comparison (32 bits)
                         
Mainframe                              
IEEE
range                 
bigger                                     
smaller
precision            
less             
                          
more 
 
Note 0 is always hard to normalize
as there is no non-0 digit to lead with.  So it is always a special
case.
 
 CHARACTERS
Simply choose a unique N-bit code for each desired character.  It is
desirable to have 0-9 in sequence, A-Z in sequence and a-z in sequence.
Also an easy relationship between A-Z and a-z would be nice.  These are
collating sequences.
 Three Standards
-  ACSII- American Standard Code for Information Interchange-
-  N=7, 8th bit for parity bit
 -  most common now
 -  Internet standard
 -  0-9, A-Z and a-z are grouped.
 -  00-1F are control characters eg. 00=null, 07=bell,0D=return
 
 -  EBCDIC - Extended Binary Coded Decimal Interchange Code-
-  N=8
 -  based on old decimal (BCD) machine
 -  great for cards
 -  0-9 OK, A_Z has gaps, a-z has gaps, but relationship between them
 -  control characters (00-3F) eg. 2F bell,0D return
 
 - UNICODE-
 - new one 
 -  N=16 bits
 -  room for many alphabets for international use
 -  JAVA uses this one
 
 
 Other Data Types 
-  Boolean or  Logical - no hardware support - many possible
conventions: eg. 0-0 is false, 1-1 is true, ow - maybe
                 0-0 is false  ow is true
 -  Addresses/pointers  use Unsigned integers
 -  Arrays/Records combinations of more fundamental types
 
 There is no indication what a sequence of 0/1's stands for.
 Eg.   A 32 bit word in 68000 contains:
 442B3130.   What is stored there?
-  If 4 ASCII characters, it is D+10.
 -  If unsigned integer, it is 1,143,681,328.
 -  if signed number, it is 1,143,681,328.
 -  if real number, it is approximately 342.384277
 -  if an instruction, it is CHK.l($3130),D2  (almost)
 -