Bitwise left shift (lshift, <<)
Description
Creates a new column that shifts to the left the bits of the values in the first argument as many positions as specified in the second argument. The result is then transformed and given in decimal format.
This operation uses an 8-bit register. The bits that are shifted out are discarded, and the bit positions that have been vacated by the shift operation are zero-filled.
The following example shows how the bits in the binary form of the value 23 (00010111) are shifted to the left 2 positions. The two first values (in red) are discarded, and the vacant positions are filled with zeros (in green). The result is 01011100, which corresponds to the decimal number 92.
For more information about bitwise shifts, see this article.
How does it work in the search window?
Select Create column in the search window toolbar, then select the Bitwise left shift operation. You need to specify two arguments:
Argument | Data type | More information |
---|---|---|
Number mandatory | integer | Field whose values you want to transform. |
Number mandatory | integer | Number of places to shift to the left. |
The data type of the values in the new column is integer.
Example
We want to shift 2 positions to the left the bits of the values in the posNumbers1_int column. To do it, we will create a new column using the Bitwise left shift operation. Let's call the new column lshift_2
The arguments needed to create the new column are:
Number - posNumbers1_int column
Number - Click the pencil icon and enter 2
Click Create column and you will see the following result:
How does it work in LINQ?
Use the operator select
... as
... and add the operation syntax to create the new column. These are the valid formats of the Bitwise left shift operation:
lshift(integer1, integer2)
integer1 << integer2
Example
You can copy the following LINQ scripts and try the above example on the my.upload.sample.data
table.
from my.upload.sample.data
select split(message, ";", 17) as posNumbers1
select int(posNumbers1) as posNumbers1_int
select lshift(posNumbers1_int, 2) as lshift_2
or
from my.upload.sample.data
select split(message, ";", 17) as posNumbers1
select int(posNumbers1) as posNumbers1_int
select posNumbers1_int << 2 as lshift_2