Bitwise AND (band, &)
Description
Creates a new field that retrieves the Bitwise AND of the specified arguments. Bitwise operations consider operands as bit patterns (zeros and ones) and work at the level of their individual bits.
The Bitwise AND operation compare bit by bit the equal-length binary representations of the selected pair of arguments. If both bits in the compared position are 1, the bit in the resulting binary representation is 1; otherwise, the result is 0. The result is then transformed and given in decimal format.
For example, if you add values 7 and 9 as arguments, the result is 0001, which is converted to its corresponding decimal value (1).
7 → 0111
9 → 1001
You can also use this operation on complex data types Set and Map to return the intersection between them. The behaviour of this operation changes depending on the data type it is executed on.
How does it work in the search window?
Select Create field in the search window toolbar, then select the Bitwise AND operation. You need to specify two arguments:
Argument | Data type |
---|---|
Number mandatory | integer |
Number mandatory | integer |
The data type of the values in the new field is integer.
Example
We want to get the Bitwise AND of the values in the posNumbers1_int and posNumbers2_int fields. We will create a new field using the Bitwise AND operation to do it. Let's call the new field bitAND.
The arguments needed to create the new field are:
Number - posNumbers1_int field
Number - posNumbers2_int field
Click Create field 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 field. These are the valid formats of the Bitwise AND operation:
band(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 split(message, ";", 18) as posNumbers2
select int(posNumbers1) as posNumbers1_int
select int(posNumbers2) as posNumbers2_int
select band(posNumbers1_int, posNumbers2_int) as bitAND
or
from my.upload.sample.data
select split(message, ";", 17) as posNumbers1
select split(message, ";", 18) as posNumbers2
select int(posNumbers1) as posNumbers1_int
select int(posNumbers2) as posNumbers2_int
select posNumbers1_int & posNumbers2_int as bitAND