Learn more  » Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Bower components Debian packages RPM packages NuGet packages

skava / exotic   js

Repository URL to install this package:

Version: 2.0.8 

/ src / types / primitive / number / cast / toUint31.ts

/**
 * v8 has an optimization for storing 31-bit signed numbers.
 * Values which have either 00 or 11 as the high order bits qualify.
 * This function drops the highest order bit in a signed number, maintaining
 * the sign bit.
 *
 * @since 5.0.0-beta.6
 * @version 2.0.0 <- accidentally had as signed, fixed to uint
 * @memberOf cast
 *
 * @name toUint31
 * @alias castToSigned31BitUinteger
 * @alias castTo31
 * @alias castToUint31
 * @alias toSignedUint31
 * @alias smi
 *
 * @param {number} i32 32bit integer
 * @return {number} unsigned31Integer number
 *
 * {@link https://github.com/facebook/immutable-js/blob/master/src/Math.js#L22 immutablejs-tounsigned31}
 * @see {@link immutablejs-tounsigned31}
 */
function toUnsigned31(i32: number): number {
  // eslint-disable-next-line
  return ((i32 >>> 1) & 0x40000000) | (i32 & 0xbfffffff)
}

export { toUnsigned31 }
export default toUnsigned31