| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- const BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz";
- export function int2char(n:number) {
- return BI_RM.charAt(n);
- }
- //#region BIT_OPERATIONS
- // (public) this & a
- export function op_and(x:number, y:number):number {
- return x & y;
- }
- // (public) this | a
- export function op_or(x:number, y:number):number {
- return x | y;
- }
- // (public) this ^ a
- export function op_xor(x:number, y:number):number {
- return x ^ y;
- }
- // (public) this & ~a
- export function op_andnot(x:number, y:number):number {
- return x & ~y;
- }
- // return index of lowest 1-bit in x, x < 2^31
- export function lbit(x:number) {
- if (x == 0) {
- return -1;
- }
- let 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:number) {
- let r = 0;
- while (x != 0) {
- x &= x - 1;
- ++r;
- }
- return r;
- }
- //#endregion BIT_OPERATIONS
|