Skip to content

Bits

本文档由 src/stdlib/bits.mcrs 自动生成,请勿手动编辑。

API 列表


bit_get v1.0.0

检测 x 的第 n 位是否为 1

redscript
fn bit_get(x: int, n: int): int

参数

参数说明
x要检测的整数
n位索引(0 = 最低位),范围 [0, 30]

返回: 第 n 位为 1 则返回 1,否则返回 0

示例

redscript
let b: int = bit_get(0b1010, 1)  // result: 1 (bit 1 of 10 is set)

bit_set v1.0.0

将 x 的第 n 位设为 1(幂等)

redscript
fn bit_set(x: int, n: int): int

参数

参数说明
x要修改的整数
n要置 1 的位索引,范围 [0, 30]

返回: 第 n 位置为 1 后的 x

示例

redscript
let v: int = bit_set(0b0100, 0)  // result: 0b0101 = 5

bit_clear v1.0.0

将 x 的第 n 位清零(幂等)

redscript
fn bit_clear(x: int, n: int): int

参数

参数说明
x要修改的整数
n要清零的位索引,范围 [0, 30]

返回: 第 n 位置为 0 后的 x

示例

redscript
let v: int = bit_clear(0b0111, 1)  // result: 0b0101 = 5

bit_toggle v1.0.0

翻转 x 的第 n 位(0→1 或 1→0)

redscript
fn bit_toggle(x: int, n: int): int

参数

参数说明
x要修改的整数
n要翻转的位索引,范围 [0, 30]

返回: 第 n 位翻转后的 x

示例

redscript
let v: int = bit_toggle(0b0101, 1)  // result: 0b0111 = 7

bit_shl v1.0.0

左移 x n 位(等效于 x * 2^n)

redscript
fn bit_shl(x: int, n: int): int

参数

参数说明
x要移位的整数
n左移位数,范围 [0, 30]

返回: x << n

示例

redscript
let v: int = bit_shl(1, 4)  // result: 16 (1 << 4)

bit_shr v1.0.0

逻辑右移 x n 位(等效于 x / 2^n,向零截断)

redscript
fn bit_shr(x: int, n: int): int

参数

参数说明
x要移位的整数
n右移位数,范围 [0, 30]

返回: x >> n

示例

redscript
let v: int = bit_shr(256, 3)  // result: 32 (256 >> 3)

bit_and v1.0.0

两个整数的按位与(31 个非符号位)

redscript
fn bit_and(a: int, b: int): int

参数

参数说明
a第一个操作数
b第二个操作数

返回: a & b(两者均为 1 的位)

示例

redscript
let v: int = bit_and(0b1100, 0b1010)  // result: 0b1000 = 8

bit_or v1.0.0

两个整数的按位或(31 个非符号位)

redscript
fn bit_or(a: int, b: int): int

参数

参数说明
a第一个操作数
b第二个操作数

返回: a | b(至少一个为 1 的位)

示例

redscript
let v: int = bit_or(0b1100, 0b1010)  // result: 0b1110 = 14

bit_xor v1.0.0

两个整数的按位异或(31 个非符号位)

redscript
fn bit_xor(a: int, b: int): int

参数

参数说明
a第一个操作数
b第二个操作数

返回: a ^ b(恰好一个为 1 的位)

示例

redscript
let v: int = bit_xor(0b1100, 0b1010)  // result: 0b0110 = 6

bit_not v1.0.0

按位非 — 翻转 x 的所有 31 个非符号位

redscript
fn bit_not(x: int): int

参数

参数说明
x要取反的整数

返回: ~x(所有 31 个低位翻转;符号位不变)

示例

redscript
let v: int = bit_not(0)  // result: 2147483647 (all 31 bits set)

popcount v1.0.0

统计 x 中置 1 的位数(汉明重量)

redscript
fn popcount(x: int): int

参数

参数说明
x整数值(使用 31 个低位;符号位不计)

返回: 置 1 的位数,范围 [0, 31]

示例

redscript
let n: int = popcount(255)  // result: 8 (0xFF has 8 bits set)

Released under the MIT License.