Bitwise Unsigned Right Shift Assignment (>>>=) Expression

Summary

Perform a zero-fill right shift by the specified amount and assign the value back to a variable.

Syntax

variable >>>= amount

Parameters

variable
The variable, property, or array element to update.
amount
The amount to shift the bits. The amount can be any valid expression.

Description

For numeric variables, the >>>= operator computes the value of the expression on the right, and then shifts the bits of the variable, property, or array element value on the left by the specified amount. The expression on the right is the amount to shift the bits and is evaluated first. The shifted amount is assigned back to the variable on the left.

The >>>= operator is equivalent to the >>> operator with the left-hand side being the variable, property, or array element to modify and the right-hand side being the amount to shift the bits. Therefore, the following expressions are equivalent:

1
2
x >>>= 5;    // Equivalent to x = x >>> 5
x = x >>> 5; // Equivalent to x >>>= 5

How Bitwise Zero-fill Right Shift Operations Work

In a bitwise zero-fill right shift operation, the value to shift is converted to its binary representation. For example, the decimal (base 10) number 0 (zero) may be converted to the binary form 0000 and the number 1 (one) may be converted to 0001. The bitwise sign-propagating right shift operation will move each bit to the right by the specified amount. For example, if we shift the base 10 number 4 (four) to the right by 2 (two), the operation looks like:

1
2
3
0100 (4)
--------
0001 (1) // 4 >>> 2

In this case, the base 10 number 1 (one) is produced by shifting the base 10 number 4 (four) to the right by two.

Zero bits are added to the left, and excess bits on the right that were shifted off are discarded.

Differences from JavaScript

Bitwise zero-fill right shift operations are not limited to unsigned 32-bit integers in JS++. Unimplemented In JavaScript, the bitwise zero-fill right shift operation is limited to unsigned 32-bit integers.

Examples

Basic Usage
1
2
3
4
5
6
import System;
 
unsigned int x = 8;
Console.log(x); // 8
x >>>= 2;
Console.log(x); // 2
Division by 2 using Bitwise Unsigned Right Shifts
1
2
3
4
5
6
7
8
import System;
 
unsigned int x = 8;
Console.log(x); // 8
x >>>= 1;
Console.log(x); // 4
x >>>= 1;
Console.log(x); // 2

See Also

External Links

Share

HTML | BBCode | Direct Link