bits

std.math.bits

fun popcount

pub fun popcount(v: u64) u64;

计算置位(1)的数量(汉明权重)

v:要计数的值 retv 中 1 位的数量

fun clz

pub fun clz(v: u64) u64;

计算前导零的数量

如果 v 为 0,则返回 64。

v:值 ret:前导零位的数量

fun ctz

pub fun ctz(v: u64) u64;

计算尾随零的数量

如果 v 为 0,则返回 64。

v:值 ret:尾随零位的数量

fun rotate_left

pub fun rotate_left(v: u64, n: u64) u64;

向左旋转 n

v:要旋转的值 n:位位置数量(掩码为 0..63) retv 向左旋转 n 位后的结果

fun rotate_right

pub fun rotate_right(v: u64, n: u64) u64;

向右旋转 n

v:要旋转的值 n:位位置数量(掩码为 0..63) retv 向右旋转 n 位后的结果

fun byte_swap

pub fun byte_swap(v: u64) u64;

反转字节顺序(大端序到小端序或反之)

v:要进行字节交换的值 ret:字节顺序反转后的 v

fun bit_reverse

pub fun bit_reverse(v: u64) u64;

反转所有 64 位

v:要反转的值 ret:所有位顺序反转后的 v