位运算以及应用
位运算简介 位运算,是操作二进制位的操作 常见的位运算符 与(&):两个操作数的对应位都为1时,结果才为1,否则为0。 0101 (5) &0011 (3) 0001 或(|):两个操作数的对应位只要有一个为1,结果就为1。 异或(^):两个操作数的对应位不同时,结果为1;相同则为0。 非(~):将操作数的每一位取反。 左移(«):将操作数的二进制表示向左移动指定的位数,右边补0 右移(»):将操作数的二进制表示向右移动指定的位数,左边补符号位(对于无符号数,补0)。 应用 快速计算 比如右移一位代替除 2,左移一代替乘2 权限管理 利用位来表述不同的权限,进行权限的的检查和设置 比如:1«0 表示读取权限 1«1 表示写入权限 1«2 表示操作权限 在游戏开发中,在表示角色受到的 buff 时,也可以利用位来表示 buff。 加密解密 许多的加密算法,如DES、AES等,都使用了位运算。 其它 其实我们日常用的最多的还是下面这些 判断奇偶 if (n & 1) { // 奇数 } else { // 偶数 } /** *举个例子,比如 n 为 5,那么 n 的二进制数为: *101 ,和 1 也就是 001 与为 001 ,不为 0 所以为 True,只要二进制数的最后一位为 1 一定是偶数。 */ 交换两个数 ...