MATLAB Function Reference |

Shift bits specified number of places

**Syntax**

**Description**

```
C = bitshift(A, k)
```

returns the value of `A`

shifted by `k`

bits. Input argument `A`

must be an unsigned integer or an array of unsigned integers. Shifting by `k`

is the same as multiplication by 2^`k`

. Negative values of `k`

are allowed and this corresponds to shifting to the right, or dividing by 2^`abs`

(`k`

) and truncating to an integer. If the shift causes `C`

to overflow the number of bits in the unsigned integer class of `A`

, then the overflowing bits are dropped.

```
C = bitshift(A, k, n)
```

causes any bits that overflow `n`

bits to be dropped. The value of `n`

must be less than or equal to the length in bits of the unsigned integer class of `A`

(e.g., `n <= 32`

for `uint32`

).

Instead of using `bitshift(A, k, 8)`

or another power of 2 for `n`

, consider using `bitshift(uint8(A), k)`

or the appropriate unsigned integer class for `A`

.

**Example 1**

Shifting 1100 (12, decimal) to the left two bits yields 110000 (48, decimal).

**Example 2**

Repeatedly shift the bits of an unsigned 16 bit value to the left until all the nonzero bits overflow. Track the progress in binary:

a = intmax('uint16'); disp(sprintf( ... 'Initial uint16 value %5d is %16s in binary', ... a, dec2bin(a))) for k = 1:16 a = bitshift(a, 1); disp(sprintf( ... 'Shifted uint16 value %5d is %16s in binary',... a, dec2bin(a))) end

**See Also **

`bitand`

, `bitcmp`

, `bitget`

, `bitmax`

, `bitor`

, `bitset`

, `bitxor`

, `fix`

bitset | bitxor |

© 1994-2005 The MathWorks, Inc.