+加法-减法(作为二元运算符)或否定(作为一元前缀运算符)*乘法/整数除法,结果向零截断。例如,7/4 和 -7/-4 都截断为 1,而 -7/4 和 7/-4 都截断为 -1。a%ba 除以 b 的余数。a 和 b 都是正整数。÷浮点数(算术)除法。ceil(x)大于或等于 x 的最小整数。floor(x)小于或等于 x 的最大整数。 逻辑运算符
a&&b逻辑与操作,用于判断 a 和 b 是否都为真。a||b逻辑或操作,用于判断 a 和 b 是否至少有一个为真。!逻辑非操作 位运算符
&按位与操作。对两个数的二进制表示进行逐位与运算。|按位或操作。对两个数的二进制表示进行逐位或运算。^按位异或操作。对两个数的二进制表示进行逐位异或运算。~按位取反操作。对数的二进制表示进行逐位取反。a>>b右移位操作。将 a 的二进制补码表示情势向右移动 b 个比特位置。这个运算符仅用于 b 为非负整数的情况。向右移动时,原来最左边的位被移到最右边,左侧空出的位用符号位(即最左边的位)填充。a<<b左移位操作。将 a 的二进制补码表示情势向左移动 b 个比特位置。这个运算符仅用于 b 为非负整数的情况。向左移动时,原来最右边的位被移到最左边,右侧空出的位用0填充。 赋值
=赋值运算符。将右侧表达式的值赋给左侧的变量。++自增运算符。x++ 相称于 x = x + 1。当这个运算符用于数组索引时,变量值在自增操作之前被获取。–自减运算符。x-- 相称于 x = x - 1。当这个运算符用于数组索引时,变量值在自减操作之前被获取。+=加法赋值运算符。例如,x += 3 对应于 x = x + 3。-=减法赋值运算符。例如,x -= 3 对应于 x = x - 3。 数学函数
这些数学函数 (Abs, Clip3, Clip1, Min, Max, Round2 and Round2Signed) 定义如下:
Round2 函数的尺度定义使用了数学中的幂和除法操作。这里提供了一个使用整数操作的等效定义:
Round2(x, n) {
if (n == 0)
return x;
return (x + (1 << (n - 1))) >> n;
}
复制代码
这个函数对数值 x 进行舍入,n 指定了要舍入到的小数位的位数。假如 n 为 0,则直接返回 x。否则,通过加上 2 的 (n-1) 次方,然后向右位移 n 位来实现舍入。
FloorLog2(x) 函数定义为输入 x 的以 2 为底的对数的向下取整值。输入 x 总是一个整数,而且总是大于或等于 1。这个函数用于找出 x 的最显著位(即最高位的 1)的位置:
FloorLog2(x) {
s = 0;
while (x != 0) {
x = x >> 1;
s++;
}
return s - 1;
}
复制代码
这个函数通过不停地将 x 右移直到 x 为 0,来计算 x 的二进制表示中最高位 1 的位置。
CeilLog2(x) 函数定义为输入 x 的以 2 为底的对数的向上取整值。当 x 为 0 时,函数定义为返回 0。输入 x 总是一个整数,而且总是大于或等于 0。这个函数用于计算表树模围从 0 到 x-1 的值所需的位数: