|
|
@@ -548,9 +548,9 @@ System.out.println(5 ^ 3); // 6
|
|
|
单目运算符,符号右边的数的二进制位,如果为 `0` 则运算结果为 `1`,如果为 `1` 则运算结果为 `0`。
|
|
|
|
|
|
```
|
|
|
-~ 0101 ← 5
|
|
|
---------
|
|
|
- 1010 → -6
|
|
|
+~ 0000 0101 ← 5(8位二进制)
|
|
|
+------------
|
|
|
+ 1111 1010 → -6
|
|
|
```
|
|
|
|
|
|
```java
|
|
|
@@ -618,6 +618,18 @@ System.out.println(-5 >>> 1); // 2147483645(大正数)
|
|
|
| 右移 `>>` | 低位丢失,高位补符号位 | 相当于 **÷2ⁿ**(向下取整) |
|
|
|
| 无符号右移 `>>>`| 低位丢失,高位补 0 | 负数会变为大正数 |
|
|
|
|
|
|
+#### 随堂练习:位运算
|
|
|
+
|
|
|
+运行以下代码,查看结果,并验证位运算规律:
|
|
|
+
|
|
|
+```java
|
|
|
+System.out.println(15 >> 3); // ?
|
|
|
+System.out.println(66 << 2); // ?
|
|
|
+System.out.println(75 & 86); // ?
|
|
|
+System.out.println(63 | 36); // ?
|
|
|
+System.out.println(-128 >>> 3); // ?
|
|
|
+```
|
|
|
+
|
|
|
**完整代码 —— Demo06.java**
|
|
|
|
|
|
```java
|
|
|
@@ -1066,6 +1078,14 @@ public class Demo06 {
|
|
|
右移:低位丢失,高位补符号位,相当于 ÷2 并且向下取整
|
|
|
无符号右移:低位丢失,高位补0,对负数会得到大正数
|
|
|
*/
|
|
|
+ /*
|
|
|
+ 编程运行,查看结果
|
|
|
+ 15>>3
|
|
|
+ 66<<2
|
|
|
+ 75&86
|
|
|
+ 63|36
|
|
|
+ -128>>>3
|
|
|
+ */
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
@@ -1099,6 +1119,7 @@ public class Demo06 {
|
|
|
23. **右移 `>>`**:低位丢失,高位补符号位,相当于 **÷2ⁿ**(向下取整)
|
|
|
24. **无符号右移 `>>>`**:低位丢失,高位补 0,负数会变为大正数
|
|
|
25. **成绩等级练习**:综合运用 `if-else if-else` + 比较运算符 + 逻辑运算符 `&&` 实现多范围判断
|
|
|
+26. **位运算随堂练习**:计算 `15>>3`、`66<<2`、`75&86`、`63|36`、`-128>>>3` 的运行结果
|
|
|
|
|
|
---
|
|
|
|