javasilver ビット計算
Q&A
Closed
解決したいこと
javasilver紫本にでてくるビットに関する問題の解説を理解したい
ビットの計算について理解できていない問題
public class Main{
public static void main(String[] args){
int val = 1;
switch(val){
case 0:
System.out.print("X");
case 1 | 2: //ここのビット演算子についての計算が理解できない
System.out.print("Y");
case 10:
System.out.print("Z");
}
}
}
【問題の答え】
コードは実行されるが、何も出力されない
【解説】
(ビットの部分について抜粋しています)
| はビット演算子です。左辺と右辺をビットで比較し、
どちらかが 1 のときのみ 1 を返し、
それ以外は 0 を返します。
ビットの桁を省略して4ビットで比較します。
1 → 0001
2 → 0010
結果 → 0011
つまり 3 が返ります。
自分の理解
基本情報を勉強したことがあり、
1 → 0001
2 → 0010
(桁省略されている)であることは理解しています。
引っかかっている部分は、
左辺と右辺を比較してどちらかが1のときのみ1を、
それ以外は0をとあるのに、
なぜ左辺と右辺のビットの和をだしているのか、
1か0が返ると書いてあるのに
なぜ3が返るのかわかりません。
どのように考えればよいでしょうか。
ネットで数日間かけて調べてみましたが
自分が調べたいことに合致するサイトを
見つけることができず、
こちらに質問しましたm(_ _)m