Utpl implements C-style bitwise operations. One detail is that these operations
coerce their operands to signed 64bit integer values internally.

-- Expect stdout --
Left shift:
10 << 2 = 40
3.3 << 4.1 = 48

Right shift:
10 >> 2 = 2
3.3 >> 4.1 = 0

Bitwise and:
1234 & 200 = 192
120.3 & 54.3 = 48

Bitwise xor:
1234 ^ 200 = 1050
120.3 ^ 54.3 = 78

Bitwise or:
1234 | 200 = 1242
120.3 | 54.3 = 126

Complement:
~0 = -1
~10.4 = -11
-- End --

-- Testcase --
Left shift:
10 << 2 = {{ 10 << 2 }}
3.3 << 4.1 = {{ 3.3 << 4.1 }}

Right shift:
10 >> 2 = {{ 10 >> 2 }}
3.3 >> 4.1 = {{ 3.3 >> 4.1 }}

Bitwise and:
1234 & 200 = {{ 1234 & 200 }}
120.3 & 54.3 = {{ 120.3 & 54.3 }}

Bitwise xor:
1234 ^ 200 = {{ 1234 ^ 200 }}
120.3 ^ 54.3 = {{ 120.3 ^ 54.3 }}

Bitwise or:
1234 | 200 = {{ 1234 | 200 }}
120.3 | 54.3 = {{ 120.3 | 54.3 }}

Complement:
~0 = {{ ~0 }}
~10.4 = {{ ~10.4 }}
-- End --
