time-to-botec/squiggle/node_modules/@stdlib/number/uint32/base/rotl/README.md
NunoSempere b6addc7f05 feat: add the node modules
Necessary in order to clearly see the squiggle hotwiring.
2022-12-03 12:44:49 +00:00

2.5 KiB

Bitwise Rotation

Bitwise rotation to the left.

Usage

var rotl32 = require( '@stdlib/number/uint32/base/rotl' );

rotl32( x, shift )

Performs a bitwise rotation to the left.

var toBinaryStringUint32 = require( '@stdlib/number/uint32/base/to-binary-string' );

var x = 2147483649;
var bstr = toBinaryStringUint32( x );
// returns '10000000000000000000000000000001'

var y = rotl32( x, 10 );
// returns 1536

bstr = toBinaryStringUint32( y );
// returns '00000000000000000000011000000000'

Notes

  • If provided a shift equal to 0, the function returns the input value.

    var y = rotl32( 3, 0 );
    // returns 3
    
  • If provided a shift greater than 31, the function performs a bitwise rotation based on the 5 least significant bits of shift (i.e., shift % 32).

    var shift = 34; // 00000000000000000000000000100010
    
    var y = rotl( 1, shift ); // 00000000000000000000000000000100
    // returns 4
    

Examples

var toBinaryStringUint32 = require( '@stdlib/number/uint32/base/to-binary-string' );
var MAX_INT = require( '@stdlib/constants/uint32/max' );
var rotl32 = require( '@stdlib/number/uint32/base/rotl' );

var HALF;
var x;
var y;
var i;

for ( i = 0; i < 100; i++ ) {
    x = i;
    y = rotl32( x, 10 );
    console.log( '%d => %s => %s => %d', x, toBinaryStringUint32( x ), toBinaryStringUint32( y ), y );
}

HALF = (MAX_INT+1) / 2;
for ( i = 0; i < 100; i++ ) {
    x = HALF + i;
    y = rotl32( x, 10 );
    console.log( '%d => %s => %s => %d', x, toBinaryStringUint32( x ), toBinaryStringUint32( y ), y );
}