You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
24 lines
696 B
24 lines
696 B
/*
|
|
* This is a AssemblyScript port of the original Java version, which was written by
|
|
* Gil Tene as described in
|
|
* https://github.com/HdrHistogram/HdrHistogram
|
|
* and released to the public domain, as explained at
|
|
* http://creativecommons.org/publicdomain/zero/1.0/
|
|
*/
|
|
|
|
export const bitCount = (n: u64): u8 => {
|
|
let bits: u8 = 0;
|
|
while (n !== 0) {
|
|
const input: u32 = <u32>(n & (<u64>u32.MAX_VALUE));
|
|
bits += bitCount32(input);
|
|
n /= 0x100000000;
|
|
}
|
|
return bits;
|
|
};
|
|
|
|
function bitCount32(input: u32): u8 {
|
|
let n = input;
|
|
n = n - ((n >> 1) & 0x55555555);
|
|
n = (n & 0x33333333) + ((n >> 2) & 0x33333333);
|
|
return <u8>((((n + (n >> 4)) & 0xf0f0f0f) * 0x1010101) >> 24);
|
|
}
|