foop
Version:
interfaces that describe their intentions.
29 lines (28 loc) • 2.4 kB
JavaScript
/**
* 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}
*/
module.exports = function toUnsigned31(i32) {
// eslint-disable-next-line
return i32 >>> 1 & 0x40000000 | i32 & 0xbfffffff;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9VaW50MzEuanMiLCJzb3VyY2VzIjpbInRvVWludDMxLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogdjggaGFzIGFuIG9wdGltaXphdGlvbiBmb3Igc3RvcmluZyAzMS1iaXQgc2lnbmVkIG51bWJlcnMuXG4gKiBWYWx1ZXMgd2hpY2ggaGF2ZSBlaXRoZXIgMDAgb3IgMTEgYXMgdGhlIGhpZ2ggb3JkZXIgYml0cyBxdWFsaWZ5LlxuICogVGhpcyBmdW5jdGlvbiBkcm9wcyB0aGUgaGlnaGVzdCBvcmRlciBiaXQgaW4gYSBzaWduZWQgbnVtYmVyLCBtYWludGFpbmluZ1xuICogdGhlIHNpZ24gYml0LlxuICpcbiAqIEBzaW5jZSA1LjAuMC1iZXRhLjZcbiAqIEB2ZXJzaW9uIDIuMC4wIDwtIGFjY2lkZW50YWxseSBoYWQgYXMgc2lnbmVkLCBmaXhlZCB0byB1aW50XG4gKiBAbWVtYmVyT2YgY2FzdFxuICpcbiAqIEBuYW1lIHRvVWludDMxXG4gKiBAYWxpYXMgY2FzdFRvU2lnbmVkMzFCaXRVaW50ZWdlclxuICogQGFsaWFzIGNhc3RUbzMxXG4gKiBAYWxpYXMgY2FzdFRvVWludDMxXG4gKiBAYWxpYXMgdG9TaWduZWRVaW50MzFcbiAqIEBhbGlhcyBzbWlcbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gaTMyIDMyYml0IGludGVnZXJcbiAqIEByZXR1cm4ge251bWJlcn0gdW5zaWduZWQzMUludGVnZXIgbnVtYmVyXG4gKlxuICoge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9pbW11dGFibGUtanMvYmxvYi9tYXN0ZXIvc3JjL01hdGguanMjTDIyIGltbXV0YWJsZWpzLXRvdW5zaWduZWQzMX1cbiAqIEBzZWUge0BsaW5rIGltbXV0YWJsZWpzLXRvdW5zaWduZWQzMX1cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB0b1Vuc2lnbmVkMzEoaTMyKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICByZXR1cm4gaTMyID4+PiAxICYgMHg0MDAwMDAwMCB8IGkzMiAmIDB4YmZmZmZmZmY7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUJBLE1BQU0sQ0FBQyxPQUFPLEdBQUcsU0FBUyxZQUFZLENBQUMsR0FBRyxFQUFFOztFQUUxQyxPQUFPLEdBQUcsS0FBSyxDQUFDLEdBQUcsVUFBVSxHQUFHLEdBQUcsR0FBRyxVQUFVLENBQUM7Q0FDbEQ7In0=