• 締切済み

シフト演算の必要性

左シフトとか、右シフトとか 何の意味があるのですか?

みんなの回答

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.3

#2です。「必ず必要」と書いてしまいましたが訂正及び補足です。 何故Javaがシフト演算を実装している理由ですが ほとんどのCPUはCPUの命令としてビットシフトする命令を持っています。 四則演算でビットシフトしたのと同じように値を変化させることもできますが、 CPU自体にそういう命令があるなら 言語もそういう命令を実装をするのが自然だと思います。 (つまり絶対必要なわけではありません。シフト演算子の無い言語もあります。) シフト演算はC/C++の仕様であったものですから、その影響を受けたJavaも 敢えてその仕様を省く事はなかったのでしょう。

yuuitirou
質問者

お礼

初心者の自分には 難しい話ではありますが 回答ありがとうございます。 理解できるように 頑張ります。

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.2

ある種の変換を行うのに必ず必要になります。 例えばデータの暗号化に使われる事もあります。 Base64へのエンコード、デコードや、UTF8とUTF16、UTF32の相互変換プログラムを Javaのライブラリを使わず自分で書けば必要性を理解できると思います。 他にも左シフトを行うと、値は2倍になりますよね?右シフトは半分になります。 この特性を知っておくことで 例えば多倍長の乗除演算をより効率的に行う事ができます。 (BigDecimalも内部で使っていると思います。)

  • auty
  • ベストアンサー率58% (284/486)
回答No.1

論理演算といわれるものの1種ですが、適用する対象によっては、よりCPUに近い側で演算されるため、 ・ 計算速度のアップ ・ メモリの節約 などが考えられます。

yuuitirou
質問者

お礼

分かりました より分かるように自分でも 調べてみます。 ありがとうございます

関連するQ&A