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
这是一个一元运算符,这意味着它适用于单个数字,而不是两个。它出现在这个单一操作数之前。
按位运算符表示“如果数字的相应位为零,~则结果位为一,如果数字的相应位为一,则结果位为零”:aa
~1 = 0
~0 = 1
例子:
| 例子 | 结果 |
|---|---|
|
|
|
|
|
|
|
|
1这个运算符只是简单地改变了到的位0和到的0位1。
GO TO FULL VERSION