Loading... # 位运算 计算机中的数以二进制的形式存在,位运算就是对二进制数位进行操作,执行效率很高 机器语言就是位运算 ## 运算符 与 & 或 | 取反 ~ 异或 ^ 左移 <<(相当于 ×2,低位补0,高位舍去) 右移 >>(相当于 ÷2,低位舍去,高位补0) ## 负数 计算机中运算使用二进制补码,正数补码是本身,负数补码符号位不变,其余按位取反,最后+1 eg:快速判断i是否等于-1可以直接使用~i,因为-1补码为11111111,取反后就是00000000,即0 ## 位运算的加减乘除 **加法** 设两个数为x,y 1. 各位对齐异或得x 2. 各位相与得y 3. 若y$\neq$;0,则回到1步骤;若y=0 **减法** 由于计算机只进行加法,可以采用一个数加一个负数 eg:13-6 = 13+(-6) **乘法** 转换为乘数倍的被乘数相加,对于正负号可以采用绝对值计算,最后单独确定正负号,**同号为正异号为负** **除法** 转换为用除数去减被除数,直到被除数小于除数,此时所减次数为商,被除数为余数,正负号同乘法 ## 位运算高级使用 ### 特殊乘除法 对于乘除数为2的n次方时,可以采用左移右移n位的方式快速计算 ### 交换两个整数值 以前采用的是设置过渡变量,现在学习了位运算中的异或可以采用它的特殊性质:x\^0=x,x\^x=0 对于a,b两个值 ~~~c a ^= b b ^= a a ^= b ~~~ 原理:a=a\^b,b=b\^a=b\^(a\^b)=a,a=a\^b=a\^(a\^b)=b ### 判断奇偶 取最后一位,若为1则奇数,若为0则偶数 即判断a&1 最后修改:2022 年 02 月 21 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏