位运算符
| 一、逻辑运算在位运算中应用 |
|
|
| 【】用于二进制运算的符号 |
|
【】逻辑运算符在二进制模式下参与位运算:都要转化为32位的二进制来参与位运算
|
|
【】与运算,通过与上几个二进制的1来获取原数固定的后几位, 与1获取最后一位,与11获取最后两位,与111获取最后三位,与1111获取最后四位数。 想要取一个二进制数某一段,可以拿对应这一段的1去取
|
|
【】或| |
|
【】异或^
【】可以用来简单加密,数据量不变,但是内容改变 |
| 【】反码~,一个正数取反加一就是负数,比如7,~7+1=-7,那么~7=-8 |
| 二、移位运算符--左移、右移、无符号右移 |
|
【】左移<<,右边尾部出现的空位补0
|
|
【】右移>>左边头部出现的空位用原来的该位数字补,原来0补位0,原来1补位1
【】右移相当于除二,所得结果舍弃小数部分(或者视为舍弃余数部分只要商) |
| 【】无符号右移,几何右移,就是数据进行右移时高位出现的空位,不论原高位出现什么,空位都用0补 |
| 【】左移右移都是涉及2的倍数才使用的,大多数情况不用 |
| 三、练习 |
![]() |
|
【1】2*8 移位运算在乘2除2上高效简便
二进制乘法的实际运算规则:运算量大,
|
|
【2】二值互换问题 最简单的方式,通过第三方变量来完成,就是增加一个临时变量做临时存储
【】不用第三方变量,可以求和后运算
【】怕超出范围,还想要完成,可以通过位运算来完成(3^5=5^3)
这个方法记住就行,面试的时候用。虽然特别高效,但是阅读性很差 |
| 实际开发过程,必须使用第一种方式,阅读性最强,谁都能看懂 |















浙公网安备 33010602011771号