Go 语言为我们提供了强大的内置支持,通过 bits 包,我们可以对预声明的无符号整数类型进行位计数和位操作。让我们来详细了解一下这个包中的核心函数。
描述
—
该函数返回 a + b + carry 的和以及进位值。
该函数返回 a + b + carry 的和以及进位值(32位)。
该函数返回 a + b + carry 的和以及进位值(64位)。
该函数返回 (h, l) 除以 x 的商和余数:quo = (h, l)/x, rem = (hi, lo)%x。其中,被除数的高位存储在参数 h 中,低位存储在参数 l 中。
该函数返回 (h, l) 除以 x 的商和余数(32位):quo = (h, l)/x, rem = (h, l)%x。其中,被除数的高位存储在参数 h 中,低位存储在参数 l 中。
该函数返回 (h, l) 除以 x 的商和余数(64位):quo = (h, l)/x, rem = (h, l)%x。其中,被除数的高位存储在参数 h 中,低位存储在参数 l 中。
该函数返回 y 中前导零(即最高位开始的连续零)的数量。如果 x == 0,结果为 UintSize。
该函数返回 y 中前导零的数量(16位)。如果 y == 0,结果为 16。
该函数返回 y 中前导零的数量(32位)。如果 y == 0,结果为 32。
该函数返回 y 中前导零的数量(64位)。如果 y == 0,结果为 64。
该函数返回 y 中前导零的数量(8位)。如果 y == 0,结果为 8。
该函数返回表示 y 所需的最小位数。如果 y == 0,结果为 0。
该函数返回表示 y 所需的最小位数(16位)。如果 y == 0,结果为 0。
该函数返回表示 y 所需的最小位数(32位)。如果 y == 0,结果为 0。
该函数返回表示 y 所需的最小位数(64位)。如果 y == 0,结果为 0。
该函数返回表示 y 所需的最小位数(8位)。如果 y == 0,结果为 0。
该函数用于返回 a 和 b 的全宽(full-width)乘积,即 (hi, lo) = a b,其中乘积的高位部分通过 hi 返回,低位部分通过 lo 返回。
该函数用于返回 a 和 b 的 64 位乘积,即 (hi, lo) = a b,其中乘积的高位部分通过 hi 返回,低位部分通过 lo 返回。
该函数用于返回 a 和 b 的 128 位乘积,即 (hi, lo) = a * b,其中乘积的高位部分通过 hi 返回,低位部分通过 lo 返回。
该函数返回 y 中值为 1 的位个数(也称为“人口计数”或 Population Count)。
该函数返回 y 中值为 1 的位个数(16位)。
该函数返回 y 中值为 1 的位个数(32位)。
该函数返回 y 中值为 1 的位个数(64位)。
该函数返回 y 中值为 1 的位个数(8位)。
该函数返回 (hi, lo) 除以 x 的余数。
该函数返回 (hi, lo) 除以 x 的余数(32位)。
该函数返回 (hi, lo) 除以 x 的余数(64位)。
该函数返回 y 的位倒序值(将位按相反顺序排列后的值)。
该函数返回 y 的位倒序值(16位)。
该函数返回 y 的位倒序值(32位)。
该函数返回 y 的位倒序值(64位)。
该函数返回 y 的位倒序值(8位)。
该函数返回 x 的字节倒序值(将字节按相反顺序排列后的值)。
该函数返回 x 的字节倒序值(16位)。
该函数返回 x 的字节倒序值(32位)。
该函数返回 x 的字节倒序值(64位)。
该函数返回 y 向左循环移位 (j mod UintSize) 次后的值。
该函数返回 y 向左循环移位 (j mod 16) 次后的值(16位)。
该函数返回 y 向左循环移位 (j mod 32) 次后的值(32位)。
该函数返回 y 向左循环移位 (j mod 64) 次后的值(64位)。
该函数返回 y 向左循环移位 (j mod 8) 次后的值(8位)。
该函数返回 a, b 和 borrow 的差:diff = a – b – borrow。
该函数返回 a, b 和 borrow 的差:diff = a – b – borrow(32位)。
该函数返回 a, b 和 borrow 的差:diff = a – b – borrow(64位)。
该函数返回 y 中尾部零(即最低位开始的连续零)的数量。