重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

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

A 回答 (3件)

論理演算といわれるものの1種ですが、適用する対象によっては、よりCPUに近い側で演算されるため、



・ 計算速度のアップ

・ メモリの節約

などが考えられます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/04/17 05:37

#2です。

「必ず必要」と書いてしまいましたが訂正及び補足です。

何故Javaがシフト演算を実装している理由ですが
ほとんどのCPUはCPUの命令としてビットシフトする命令を持っています。
四則演算でビットシフトしたのと同じように値を変化させることもできますが、
CPU自体にそういう命令があるなら
言語もそういう命令を実装をするのが自然だと思います。
(つまり絶対必要なわけではありません。シフト演算子の無い言語もあります。)

シフト演算はC/C++の仕様であったものですから、その影響を受けたJavaも
敢えてその仕様を省く事はなかったのでしょう。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/04/18 01:50

ある種の変換を行うのに必ず必要になります。


例えばデータの暗号化に使われる事もあります。

Base64へのエンコード、デコードや、UTF8とUTF16、UTF32の相互変換プログラムを
Javaのライブラリを使わず自分で書けば必要性を理解できると思います。

他にも左シフトを行うと、値は2倍になりますよね?右シフトは半分になります。
この特性を知っておくことで
例えば多倍長の乗除演算をより効率的に行う事ができます。
(BigDecimalも内部で使っていると思います。)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!