取模:可以利用按位与(&)来实现取模运算。对于一个正整数n,若要将m对n取模,可以将m与n-1进行按位与操作,得到的结果即为m对n取模的余数。 例如,要求13对4取模的余数,可以进行如下操作:
int m = 13;
int n = 4;
int mod = m & (n - 1); // mod = 1
四舍五入:可以利用按位或(|)和按位异或(^)来实现四舍五入。对于一个浮点数f,若要将其四舍五入到整数,可以先将f加上0.5(0.5可用整数1来表示),再将结果向下取整。 例如,要将3.6四舍五入到整数,可以进行如下操作:
float f = 3.6;
int round = (int)(f + 0.5) | (f + 0.5 == (int)f + 0.5 ? 0 : 1); // round = 4
其中,(int)(f + 0.5)
表示将f加上0.5后向下取整得到的整数部分,f + 0.5 == (int)f + 0.5 ? 0 : 1
表示是否需要向上取整。如果f加上0.5后的小数部分不等于0(即需要向上取整),则加上1,否则加上0。最后将这两部分的结果按位或起来即可得到四舍五入后的整数。
上一篇:按位运算符 NOT
下一篇:按位运算符:仅使用&和~来获得^