1. 位运算&
符
我们之前说过,所有数据都以二进制表示形式存储在内存中。所以很久以前,程序员想出了很多有趣的方法来处理二进制数。例如,Java 具有对数字二进制表示的位进行运算的逻辑运算符:&
(AND)、, | (OR)
( ~
NOT 或补码) 和^
(XOR - 异或)。
a & b
&
(AND)运算符
此运算符与逻辑&
(AND) 运算符非常相似,只是它由一个符号表示,而不是两个:
并将其应用于各个位。每个操作数都被视为一个位数组,i
结果的第 th 位是使用i
两个操作数中每一个的第 th 位计算的。
结果的第一位将根据数字的第一位a
和数字的第一位计算b
,第二位——根据数字的第二位a
和数字的第二位b
,等等。
( &
AND) 运算符的意思是“只有当数字的相应位等于一时,结果位才a
等于一AND
数字的相应位b
等于一”:
1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0
例子:
例子 | 结果 |
---|---|
|
|
|
|
|
|
|
|
2. 位运算|
符
此运算符与逻辑|
(OR) 运算符非常相似,只是它由一条垂直线表示,而不是两条:
a | b
并将其应用于各个位。每个操作数都被视为一个位数组,结果的第 i 位是使用两个操作数中每一个的第 i 位计算的。
按位|
(OR) 运算符表示“如果数字的相应位等于 1,则结果位a
等于 1,OR
则数字的相应位b
等于 1”:
1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0
例子:
例子 | 结果 |
---|---|
|
|
|
|
|
|
|
|
只有当两个数的对应位(相同位置的位)都为零时,结果对应的位才为零。
3. 按位^
(异或或“异或”)运算符
运算XOR
符,也发音为exclusive or,由符号表示^
。要在键盘上输入它,请按shift + 6(在英文键盘布局上)。
a ^ b
该运算符与 运算符有些相似OR
,包括名称相似:XOR
按位^
(XOR) 运算符表示“如果数字的相应位等于 1,则结果位a
等于 1OR
数字的相应位b
等于 1,但不能同时等于 1”:
1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0
例子:
例子 | 结果 |
---|---|
|
|
|
|
|
|
|
|
只有当两个数对应的位(相同位置的位)不同时,结果对应的位才等于1。如果位相同,则结果位等于零。
4.按位~
(非,补)运算符
我想你已经猜到它的作用了。此运算符与逻辑 (NOT) 运算符非常相似,但它由波浪号而不是感叹号!
表示:
~a
这是一个一元运算符,这意味着它适用于单个数字,而不是两个。它出现在这个单一操作数之前。
按位运算符表示“如果数字的相应位为零,~
则结果位为一,如果数字的相应位为一,则结果位为零”:a
a
~1 = 0
~0 = 1
例子:
例子 | 结果 |
---|---|
|
|
|
|
|
|
|
|
1
这个运算符只是简单地改变了到的位0
和到的0
位1
。
GO TO FULL VERSION