位元運算子
了解位元運算子(& | ^)與位移運算子(<< >> >>>)的基本使用。
位元運算子
我們知道資料在記憶體中都是以0/1的方式儲存,如果想直接對這些位元做運算,Java提供了一些位元運算子供設計師使用。
Operator運算子
描述
範例 (令a, b為數值)
~
位元補數(complement)運算
~a
&
位元和(and)運算
a & b
|
位元或(or)運算
a | b
^
位元互斥或(exclusive or)運算
a ^ b
補數 complement (~):
補數的意思就是1變0,0變1,反向的感覺。
範例程式:
執行結果:
和 and (&):
和運算,是二元運算,只有兩個都為1,結果才是1。
範例程式:
執行結果:
AND真值表:
&
1
0
1
1
0
0
0
0
或 or (|):
或運算,是二元運算,只要有一個1,結果就是1。
範例程式:
執行結果:
OR 真值表:
|
1
0
1
1
1
0
1
0
互斥或 exclusive or (^):
互斥或,英文縮寫常稱『XOR』,是二元運算子,位元不同為1。
程式範例:
執行結果;
XOR 真值表:
^
1
0
1
0
1
0
1
0
位移運算子 Bit Shift Operators
位移運算子的目的是向左或向右移動目標運算元的每個位元。
Operator運算子
描述
範例 (令a, b為數值)
<<
保留正負號的左移運算
a << b (將a逐位元左移b個單位)
>>
保留正負號的右移運算
a >> b (將a逐位元右移b個單位)
>>>
右移運算
a >>> b
範例程式:
執行結果:
範例程式2 (負號測試):
執行結果:
(無號右移>>>,不會理會當前的符號位元,直接右移補0上去)
※利用位元位移運算子,可以達到最快的 *2 或 /2 運算。
嘛,因為根本沒做到數學運算,而乘法跟除法在計算上是很廢時的。
範例程式:
執行結果:
Last updated