ISHFT (The GNU Fortran Compiler)

### 8.168 `ISHFT` — Shift bits ¶

Synopsis:

  `RESULT = ISHFT(I, SHIFT)`

Description:

  `ISHFT` returns a value corresponding to I with all of the bits shifted SHIFT places. A value of SHIFT greater than zero corresponds to a left shift, a value of zero corresponds to no shift, and a value less than zero corresponds to a right shift. If the absolute value of SHIFT is greater than `BIT_SIZE(I)`, the value is undefined. Bits shifted out from the left end or right end are lost; zeros are shifted in from the opposite end.

Class:

  Elemental function

Arguments:

  I | The type shall be `INTEGER` or `UNSIGNED`.
  SHIFT | The type shall be `INTEGER`.

Return value:

  The return value is of type of I.

Specific names:

  Name | Argument | Return type | Standard
  --- | --- | --- | ---
  `ISHFT(A)` | `INTEGER A` | `INTEGER` | Fortran 90 and later
  `BSHFT(A)` | `INTEGER(1) A` | `INTEGER(1)` | GNU extension
  `IISHFT(A)` | `INTEGER(2) A` | `INTEGER(2)` | GNU extension
  `JISHFT(A)` | `INTEGER(4) A` | `INTEGER(4)` | GNU extension
  `KISHFT(A)` | `INTEGER(8) A` | `INTEGER(8)` | GNU extension

Standard:

  Fortran 90 and later, has overloads that are GNU extensions. Extension for `UNSIGNED` (see Unsigned integers)

See also:

  `ISHFTC` — Shift bits circularly