extra-bit
Version:
The [bit] is a basic unit of information in information theory, computing.<br>
86 lines (85 loc) • 2.6 kB
TypeScript
/**
* Get bits at specified index.
* @param x an int32
* @param i bit index
* @param w bit width [1]
*/ export declare function get(x: number, i: number, w?: number): number;
/**
* Get bits as per mask.
* @param x an int32
* @param m bit mask
*/ export declare function getAs(x: number, m: number): number;
/**
* Set bits at specified index.
* @param x an int32
* @param i bit index
* @param v bit value [1]
* @param w bit width [1]
*/ export declare function set(x: number, i: number, v?: number, w?: number): number;
/**
* Set bits as per mask.
* @param x an int32
* @param m bit mask
* @param f bit value [1]
*/ export declare function setAs(x: number, m: number, f?: number): number;
/**
* Toggle bits at specified index.
* @param x an int32
* @param i bit index
* @param w bit width [1]
*/ export declare function toggle(x: number, i: number, w?: number): number;
/**
* Toggle bits as per mask.
* @param x an int32
* @param m bit mask
*/ export declare function toggleAs(x: number, m: number): number;
/**
* Swap bit sequences at specified indices.
* @param x an int32
* @param i first bit index
* @param j second bit index
* @param w bit width [1]
*/ export declare function swap(x: number, i: number, j: number, w?: number): number;
/**
* Find index of first set bit from LSB.
* @param x an int32
*/ export declare function scan(x: number): number;
/**
* Find index of first set bit from MSB.
* @param x an int32
*/ export declare function scanReverse(x: number): number;
/**
* Count bits set.
* @param x an int32
*/ export declare function count(x: number): number;
/**
* Calculate n-bit parity.
* @param x an int32
* @param n number of bits [1]
*/ export declare function parity(x: number, n?: number): number;
/**
* Rotate bits by a certain amount.
* @param x an int32
* @param n rotate amount (+ve: left, -ve: right)
*/ export declare function rotate(x: number, n?: number): number;
/**
* Reverse all bits.
* @param x an int32
*/ export declare function reverse(x: number): number;
/**
* Merge bits as per mask.
* @param x first int32
* @param y second int32
* @param m bit mask (0 ⇒ from x)
*/ export declare function merge(x: number, y: number, m: number): number;
/**
* Interleave bits of two int16s.
* @param x first int16
* @param y second int16
* @returns int32
*/ export declare function interleave(x: number, y: number): number;
/**
* Sign extend variable bit-width integer.
* @param x variable bit-width integer
* @param w bit width (32)
*/ export declare function signExtend(x: number, w?: number): number;