|
|
|
|
- Use
- Binary operators
- Binary AND, OR and exclusive OR
- Binary NOT
- Shift operators
- Syntaxes
- Notes
- Operator for direct access to the bits
- Access to a bit
- Access to a 1, 2 or 4-byte integer
- Access to the value of several bits
The operations on binary values are performed: - with the WLanguage functions: BinaryAND, BinaryOR, BinaryNOT, BinaryXOR.
- with specific operators: binary operators, operators for right or left offset, operator for accessing the bits.
Binary AND, OR and exclusive OR The following syntaxes can be used: - Binary AND: <Value 1> & <Value 2>
- Binary OR: <Value 1> | <Value 2>
- Binary exclusive OR: <Value 1> || <Value 2>
The type of result depends on the type of the operands: | | | | Value 2 Value 1 | 4-byte integer | 8-byte integer | Other | 4-byte integer | 4-byte integer | 8-byte integer | 4-byte integer | 8-byte integer | 8-byte integer | 8-byte integer | 8-byte integer | Other | 4-byte integer | 8-byte integer | 8-byte integer |
Binary NOT The syntax is as follows: ~ <Value> The type of result depends on the operand type: | | Operand | Result | 4-byte integer | 4-byte integer | 8-byte integer | 8-byte integer | Other | 8-byte integer |
Syntaxes - Offset to left:
<Value 1> bitLeftShift <Value 2>> bitLeftShift(<Value 1>, <Value 2>)
- Offset to right:
<Value 1> bitRightShift <Value 2>> bitRightShift(<Value 1>, <Value 2>)
Notes - The bits of <Value 1> are shifted from <Value 2> bits to the right or to the left.
For example:
bitLeftShift(4,1) // Returns 8
Indeed, 4 in decimal corresponds to 0100 in binary. Shifted from 1 bit to the left, we get 1000 in binary that corresponds to 8 in decimal.
bitRightShift(4,2) // Returns 1
Indeed, 4 in decimal corresponds to 0100 in binary. Shifted from 2 bits to the right, we get 0001 in binary that corresponds to 1 in decimal. - The bits that exceed the size of <Value 1> are ignored. For example:
bitLeftShift(4,30) // Returns 0 bitRightShift(4,4) // Returns 0
- If <Value 2> is greater than the size of <Value 1> (32 for a 4-byte integer and 64 for an 8-byte integer), the result is always 0. For example:
bitLeftShift(4,35) // Returns 0
- The type of result depends on the type of the operand:
| | Operand Value 1 | Result | 4-byte integer | 4-byte integer | 8-byte integer | 8-byte integer | Other | 8-byte integer |
Operator for direct access to the bits Access to a bit Syntax: <Value 1> [ <n> ] This syntax is used to read or modify the value of <N> bit in the <Value 1> value. Counting bits starts from 1 from left to right (from the lowest byte to the highest byte): - 1 to 32 for a 4-byte integer,
- 1 to 64 for an 8-byte integer.
If the value of <n> is incorrect, the operation returns 0. Examples:
// Positions the fifth and seventh bits to 1 n is int n[5] = 1 n[7] = True // Checks the value of bits 4, 5, 6 and 7 IF n[4] THEN Trace(4) // not displayed IF n[5] THEN Trace(5) // displays 5 IF n[6] THEN Trace(6) // not displayed IF n[7] THEN Trace(7) // displays 7
// Assign a value by modifying the bits n is int = 0 // Switch on bit #1: n worth 1 in decimal n[1] = 1 // Switch on bit #8 as well: n worth 129 in decimal (2 power 0 + 2 power 7) n[8] = 1
Access to a 1, 2 or 4-byte integer Syntaxes: - <Value 1> [ <n>, wlInt_1 ]
- <Value 1> [ <n>, wlInt_2 ]
- <Value 1> [ <n>, wlInt_4 ]
These syntaxes are used to read or modify the value of the 1, 2 or 4-byte integer in the <Value 1> value. Possible values for <n> according to the type of <Value 1>: | | | | Value 1 | wlInt_1 | wlInt_2 | wlInt_4 | 4-byte integer | 1 to 4 | 1 to 2 | 1 | 8-byte integer | 1 to 8 | 1 to 4 | 1 to 2 |
If the value of <n> is incorrect, the operation returns 0. Access to the value of several bits Syntaxes: - <Value 1> [ TO <n> ]
- <Value 1> [ <n> TO ]
- <Value 1> [ <n> TO <o> ]
- <Value 1> [ <n> ON <Number> ]
These syntaxes are used to read or modify the value corresponding to the specified bits.
This page is also available for…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|