shifta(3I)

SHIFTA, SHIFTL, SHIFTR - Performs a shift

Showing IRIX 6.5.30 (default release). Last changed in IRIX 6.5.19.

NAME
     SHIFTA, SHIFTL, SHIFTR - Performs a shift

SYNOPSIS
     SHIFTA ([I=]i, [J=]j)
     SHIFTL ([I=]i,[J=]j)
     SHIFTR ([I=]i,[J=]j)

STANDARDS
     Fortran extension

DESCRIPTION
     The SHIFTA intrinsic function performs a right shift with sign
     extension fill of the object i by j.  The SHIFTL intrinsic function
     performs a left shift with zero fill of i by j bits.  The SHIFTR
     intrinsic function performs a right shift with zero fill of the i by j
     bits.

     The arguments are as follows:

     i         The value to be shifted.  Must be of type Boolean, integer,
               real, or Cray pointer.

     j         The number of bits to shift the value.  Must be of type
               integer or Boolean.  j must be within the range
               0 <= j <= size, where size is the size, in bits, of i.  That
               is, if i is a 64-bit object, j must be within the range
               0 <= j <= 64.

     For values of j outside these ranges, SHIFTA returns an undefined
     result.

     On IRIX systems, an object is 8 bits, 16 bits, 32 bits, or 64 bits.

     These are elemental functions.  The names of these intrinsics cannot
     be passed as arguments.

NOTES
     SHIFTL and SHIFTR are outmoded routines.  Refer to the MIPSpro Fortran
     Language Reference Manual, Volume 2, for information about outmoded
     features and their preferred standard alternatives.

RETURN VALUES
     These routines return an integer result on IRIX systems.

EXAMPLES
     Example 1.  The following section of Fortran code shows the SHIFTA
     function used in the case where i is of type integer.  The bit pattern
     of i and the bit pattern of the result are shown.  For clarity, a 16-
     bit value is used rather than a 64-bit value.

          INTEGER I1, I2, I3
          ...
          I2 = 5
          I3 = SHIFTA(I1,I2)

        ---------------------------------------------------------------
       | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
        ---------------------------------------------------------------
                           I1 (i)

        ---------------------------------------------------------------
       | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |
        ---------------------------------------------------------------
                           I3 (result)

     Example 2.  The following section of Fortran code shows the SHIFTL
     function used in the case where i is of type integer.  The bit pattern
     of i and the bit pattern of the result are also given.  For
     simplicity, a 16-bit object is used.

          INTEGER I1, I2, I3
          ...
          I2 = 5
          I3 = SHIFTL(I1,I2)


           ---------------------------------------------------------------
          | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |

           ---------------------------------------------------------------
                                      I1 (i)


           ---------------------------------------------------------------
          | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |

           ---------------------------------------------------------------
                                      I3 (result)

     Example 3.  The following section of Fortran code shows the SHIFTR
     function used in the case where i is of type integer.  The bit pattern
     of i and the bit pattern of the result are also given.  For
     simplicity, a 16-bit object is used.

          INTEGER I1, I2, I3
          ...
          I2 = 5
          I3 = SHIFTR(I1,I2)


           ---------------------------------------------------------------
          | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |

           ---------------------------------------------------------------
                                       I1 (i)


           ---------------------------------------------------------------
          | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |

           ---------------------------------------------------------------
                                       I3 (result)