Ucode implements C-style bitwise operations. One detail is that these operations coerce their operands to 64bit integer values internally. If both operands are positive, unsigned 64bit semantics are used. If one of the operands is negative, both are converted to signed 64bit numbers. -- 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 = 18446744073709551615 ~10.4 = 18446744073709551605 -- 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 --