PowerBuilder 12 includes support for bitwise right-shift and left-shift operators.
BitRight operator
The right-shift operator shifts the first operand to the right by the number of bits specified in the second operand. This works the same as the C# “>>” operator.
The shift to the right can be arithmetic or logical, depending on the datatype of the first operand:
-
Arithmetic – if the first operand is an integer or a long datatype, high-order empty bits are set to the sign bit.
-
Logical – if the first operand is an unsigned integer (uint) or unsigned long (ulong) datatype, high-order bits are filled with zeros.
BitLeft operator
The left-shift operator shifts the first operand to the left by the number of bits specified in the second operand. This works the same as the C# “<<” operator. The datatype of the second operand must be an integer.
The high-order bits of the first operand are discarded and the low-order empty bits are filled with zeros. Shift operations never cause overflows. The shift amount to the left depends on the bit quantity of the first operand datatype:
-
32-bit quantity – if the first operand is a long or ulong datatype, the shift amount is given by the low-order five bits of the second operand. The maximum left shift is 0x1f, or 31 bits.
-
64-bit quantity – if the first operand is a longlong or ulonglong datatype, the shift amount is given by the low-order six bits of the second operand. The maximum left shift is 0x3f, or 63 bits.
Operator precedence
Bitwise shift operations are performed before relational (=, >, <, <=, >=, <>), negation (NOT), and logical (AND, OR) operations. They are performed after grouping, unary, exponentiation, arithmetic (multiplication, division, addition, subtraction), and string concatenation operations.