• ベストアンサー

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 になっています。説明はビット単位の左シフトと書いているのですが具体的にはどういった計算方法になるのか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • nagare
  • ベストアンサー率33% (280/831)
回答No.2

>、「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

takahiro
質問者

お礼

度々のご回答ありがとうございます!ずっと分からなかったことがはっきりしました。参考サイトも活用させていただきます。

その他の回答 (2)

noname#11476
noname#11476
回答No.3

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)

takahiro
質問者

お礼

詳しい説明ありがとうございます。2を掛けて計算できるのは驚きました!まだまだ勉強を始めたばっかりですがまた何かございましたらよろしくお願いします。

  • nagare
  • ベストアンサー率33% (280/831)
回答No.1

ビットシフトですね 2(10進)を2ビット左シフトで説明します 2(0010(2進数))を2ビット左シフトさせる8(1000(2進数))となります わかりますか?

takahiro
質問者

補足

ご回答ありがとうございます。計算方法は分かりましたが、「d<<e」の意味がよくわからないのですがdをeビット左にシフトするってことであってますか?

関連するQ&A