ONLINE HELP
 WINDEVWEBDEV AND WINDEV MOBILE

Help / WLanguage / WLanguage syntax / Operators
  • Use
  • Bitwise 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
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReports and QueriesUser code (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Browser code
WINDEV Mobile
AndroidAndroid Widget iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Others
Stored procedures
Use
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.
Bitwise operators

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 integer8-byte integerOther
4-byte integer4-byte integer8-byte integer4-byte integer
8-byte integer8-byte integer8-byte integer8-byte integer
Other4-byte integer8-byte integer8-byte integer

Binary NOT

The syntax is as follows: ~ <Value>
The type of result depends on the operand type:
OperandResult
4-byte integer4-byte integer
8-byte integer8-byte integer
Other8-byte integer
Shift operators

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 1Result
    4-byte integer4-byte integer
    8-byte integer8-byte integer
    Other8-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 1wlInt_1wlInt_2wlInt_4
4-byte integer1 to 41 to 21
8-byte integer1 to 81 to 41 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.
Minimum version required
  • Version 14
This page is also available for…
Comments
Click [Add] to post a comment

Last update: 07/03/2023

Send a report | Local help