| var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz"; | 
| export function int2char(n) { | 
|     return BI_RM.charAt(n); | 
| } | 
| //#region BIT_OPERATIONS | 
| // (public) this & a | 
| export function op_and(x, y) { | 
|     return x & y; | 
| } | 
| // (public) this | a | 
| export function op_or(x, y) { | 
|     return x | y; | 
| } | 
| // (public) this ^ a | 
| export function op_xor(x, y) { | 
|     return x ^ y; | 
| } | 
| // (public) this & ~a | 
| export function op_andnot(x, y) { | 
|     return x & ~y; | 
| } | 
| // return index of lowest 1-bit in x, x < 2^31 | 
| export function lbit(x) { | 
|     if (x == 0) { | 
|         return -1; | 
|     } | 
|     var r = 0; | 
|     if ((x & 0xffff) == 0) { | 
|         x >>= 16; | 
|         r += 16; | 
|     } | 
|     if ((x & 0xff) == 0) { | 
|         x >>= 8; | 
|         r += 8; | 
|     } | 
|     if ((x & 0xf) == 0) { | 
|         x >>= 4; | 
|         r += 4; | 
|     } | 
|     if ((x & 3) == 0) { | 
|         x >>= 2; | 
|         r += 2; | 
|     } | 
|     if ((x & 1) == 0) { | 
|         ++r; | 
|     } | 
|     return r; | 
| } | 
| // return number of 1 bits in x | 
| export function cbit(x) { | 
|     var r = 0; | 
|     while (x != 0) { | 
|         x &= x - 1; | 
|         ++r; | 
|     } | 
|     return r; | 
| } | 
| //#endregion BIT_OPERATIONS |