- ベストアンサー
n=a&&b==c<d<<eの計算方法
n=a&&b==c<d<<eの計算方法のうち d<<e の部分がわかりません。教科書の設定は a=3 b=4 c=5 d=6 e=2 で答えは n=0 になっています。説明はビット単位の左シフトと書いているのですが具体的にはどういった計算方法になるのか教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>、「d<<e」の意味がよくわからないのですがdをeビット左にシフトするってことであってますか? あってます (とっても複雑で、く勘違いしやすい式ですねぇーー) (これはIF文で使ってますよね? 比較演算子が混在してますので) 参考サイトです http://www.belution.com/miwaki/developer/c_operator.shtml http://www.e-owl.net/course/trial/demoC/course/cont/page/00002T20-01-04-L.html http://www.kumei.ne.jp/c_lang/intro/no_40.htm
その他の回答 (2)
n = a && b == c < d << e 演算子の優先順位で、 n = (a && b) == c < (d << e) として評価されます。 n = ( 3 && 4 ) == 5 < (6 << 2) = ( 0 ) == 5 < ( 24 ) = ( 0 ) == -1 (true) = 0 (false) 6 << 2 は 6*2*2 (つまり2を二回掛ける) と同じになります。 6 を1 byte の2進数で表すと、 [0000 0110] -> 1 bit left shift -> [0000 1100](十進数 12) [0000 0110] -> 2 bit left shift -> [0001 1000](十進数 24)
お礼
詳しい説明ありがとうございます。2を掛けて計算できるのは驚きました!まだまだ勉強を始めたばっかりですがまた何かございましたらよろしくお願いします。
- nagare
- ベストアンサー率33% (280/831)
ビットシフトですね 2(10進)を2ビット左シフトで説明します 2(0010(2進数))を2ビット左シフトさせる8(1000(2進数))となります わかりますか?
補足
ご回答ありがとうございます。計算方法は分かりましたが、「d<<e」の意味がよくわからないのですがdをeビット左にシフトするってことであってますか?
お礼
度々のご回答ありがとうございます!ずっと分からなかったことがはっきりしました。参考サイトも活用させていただきます。