File tree Expand file tree Collapse file tree 1 file changed +11
-0
lines changed Expand file tree Collapse file tree 1 file changed +11
-0
lines changed Original file line number Diff line number Diff line change @@ -645,6 +645,17 @@ float f4 = 1e-47f; //10 的幂数
645
645
## 按位运算符
646
646
647
647
648
+ 按位运算符允许我们操作一个整数基本类型中的单个“比特”位,即二进制位。按位运算符会对两个自变量中对应的位执行布尔代数,并最终生成一个结果。
649
+
650
+ 按位运算来源自 C 语言的底层操作。我们经常要直接操纵硬件,频繁设置硬件寄存器内的二进制位。Java 的设计初衷是电视机顶盒嵌入式开发,所以这种底层的操作被仍被保留了下来。然而,随着操作系统的进步,现今已没必要过于频繁地进行按位运算了。
651
+
652
+ 若两个输入位都是 1,则按位“与运算符” ` & ` 在输出位里生成一个 1 ;否则生成 0。若两个输入位里至少有一个是 1,则按位“或运算符” ` | ` 在输出位里生成一个 1;只有在两个输入位都是 0 的情况下,它才会生成一个 0。若两个输入位的某一个是 1,但不全都是 1,那么按位“异或运算符” ` ^ ` 才会在输出位里生成一个 1。按位“非运算符” ` ~ ` 属于一元运算符;它只对一个自变量进行操作(其他所有运算符都是二元运算符)。按位非运算生成与输入位的相反的值。例如,若输入 0,则输出 1;输入 1,则输出 0。
653
+
654
+ 按位运算符和逻辑运算符都使用了同样的字符,只不过数量不同。“按位”短“移位”长。按位运算符可与等号 ` = ` 联合使用以接收结果及赋值:` &= ` ,` |= ` 和 ` ^= ` 都是合法的(由于 ` ~ ` 是一元运算符,所以不可与 ` = ` 联合使用)。
655
+
656
+ 我们将 ** Boolean** 类型被视为“单位值”(* one-bit value* )对待,所以它多少有些独特的地方。我们可以执行按位“与”、“或”、“异或”,但不能执行按位“非”(大概是为了避免与逻辑“非”混淆)。对于布尔值,按位运算符具有与逻辑运算符相同的效果,只是它们不会中途“短路”。此外,针对布尔值进行的按位运算为我们新增了一个“异或”逻辑运算符,它并未包括在“逻辑”运算符的列表中。在移位表达式中,禁止使用布尔运算,原因将在下面解释。
657
+
658
+
648
659
<!-- Shift Operators -->
649
660
## 移位运算符
650
661
You can’t perform that action at this time.
0 commit comments