# Difference between revisions of "Left shift"

Left shift, <<, is a bitwise operator to shift a binary value to the left.

 Availability BASIC V Syntax BASIC V = `<<` Token (hex) BASIC V `3C 3C` (operator) Description BASIC V Returns the first operand, with the bits of its binary representation shifted toward the most significant end by the number of places specified in the second operand, and zeroes shifted in at the least significant end. Associated keywords `>>`, `>>>`, `AND`, `DIV`, `EOR`, `NOT`, `OR`

## Description

`<<` accepts two integer values, and returns the first value left-shifted by the number of binary places given in the second operand. For instance, in the statement

```PRINT ~&87654321 << 4
```

the binary digits of &87654321, 10000111011001010100001100100001, are moved four places to the left in the register. In this case, the four most significant bits (1000) are discarded, and the units' place (bit 0) becomes the sixteens' place (bit 4) of the returned value. As it is a logical shift, zeroes are shifted in at the bottom, so that bits 0 to 3 of the result are all 0s. BASIC performs the shift in a single instruction, but if we consider the shift as a step-by-step calculation, it may be represented as:

```Operand    10000111011001010100001100100001
/
1st shift  00001110110010101000011001000010 â†
/
2nd shift  00011101100101010000110010000100 â†
/
3rd shift  00111011001010100001100100001000 â†
/
4th shift  01110110010101000011001000010000 â†
```

The output from the statement is:

```>PRINT ~&87654321 << 4
76543210
```