gnablib
Version:
A lean, zero dependency library to provide a useful base for your project.
2 lines • 885 B
JavaScript
/*! Copyright 2023-2025 the gnablib contributors MPL-1.1 */
export function countBitsSet(e){return e=(e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135,e+=e>>>8,63&(e+=e>>>16)}export function lsbMask(e){return 0==e?0:4294967295>>>32-e}export function reverse(e,t){switch(t){case 5:e=(4294901760&e)>>>16|(65535&e)<<16;case 4:e=(4278255360&e)>>>8|(16711935&e)<<8;case 3:e=(4042322160&e)>>>4|(252645135&e)<<4;case 2:e=(3435973836&e)>>>2|(858993459&e)<<2;case 1:e=(2863311530&e)>>>1|(1431655765&e)<<1;break;default:throw Error("bitsPow2 must be [1 - 5]")}return e}export function countLeadZeros(e){if(0==e)return 32;return e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,[0,31,9,30,3,8,13,29,2,5,7,21,12,24,28,19,1,10,4,14,6,22,25,20,11,15,23,26,16,27,17,18][124511785*++e>>>27]}export function nextPow2(e){return 0===e?0:(e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,(e|=e>>16)+1)}