JavaでHello World
Google
  HOME  |  基礎  |  掲示板  |  ツール |  書籍  |  デザインパターン  |  リンク  |  フィードバック
JavaでHello World > Javaの基礎 > シフト演算子編  
メニュー
Home
情報交換掲示板
ツールの部屋
Java関連の書籍
変数編
文字列編
文字列の連結編
部分文字列編
文字列の比較編
文字列の長さ編
文字列バッファ編
代入演算子編
算術演算子編
演算子の簡略化編
インクリメント/デクリメント
比較演算子編
論理演算子編
ビット演算子編
シフト演算子編
三項演算子編
演算子の優先順位編
配列
多次元配列
ifステートメント
if elseステートメント
forループ
whileループ
doループ
switchステートメント
breakステートメント
continueステートメント
  2004/10/23  田中宏和
シフト演算子編
◆演算子とは?
プログラミングにおいて、演算方法を指示する記号のことです。演算の対象となる値や変数はオペランドといい、「x + 100」の場合「+」が演算子で、「x」、「100」がオペランドです。
◆ここでの環境
OS Windows XP
J2SE SDK 1.4.2_04
◆シフト演算子
ビットを直接操作するためにシフト演算子を使用することができます。シフトとはビットを右または左にずらす操作のことです。
シフト演算子
使用例
説明
<< x << a xのビットをaビットだけ左にシフトさせる。右端には0が入る。一般に、nビット左にシフトすると元の数に2nかけた値になります。
>> x >> a xのビットをaビットだけ右にシフトさせる。左端には最上位ビットと同じ値が入る。一般に、nビット右にシフトする元の数を2nで割った値になります。(算術右シフト)
>>> x >>> a xのビットをaビットだけ右にシフトさせる。左端には0が入る。左端に0が入るので符号の区別がない演算に使用します。(論理右シフト)
[例] int型の値2を5ビット左にシフトする場合( 2 << 5 )
10進数
2進数
演算前 2 00000000 00000000 00000000 00000010
演算後 2 × 25 = 64 00000000 00000000 00000000 01000000
[例] int型の値-64を5ビット右にシフトする場合( -64 >> 5 )
10進数
2進数
演算前 -64 00000000 00000000 00000000 00000010
演算後 -64 ÷ 25 = -2 00000000 00000000 00000000 01000000
 
■サンプルプログラム
Enzanshi8.java(ここからダウンロード)
public class Enzanshi8 {
  public static void main(String[] args) {
    byte b1 = 3; // ビット表現 00000011
    int i1 = b1 << 1; // i1のビット表現 00000000 00000000 00000000 00000110
    int i2 = b1 << 3; // i1のビット表現 00000000 00000000 00000000 00011000
    System.out.println("i1の値は " + i1 + " です。");
    System.out.println("i2の値は " + i2 + " です。");
  }
}
■コンパイルと実行
コマンドプロンプト

C:\JavaHello\Basic\Operator>javac Enzanshi8.java

C:\JavaHello\Basic\Operator>java Enzanshi8
i1の値は 6 です。
i2の値は 24 です。

C:\JavaHello\Basic\Operator>

おおお!シフト演算ができましたね!
 
■書籍
Java関連の書籍
 
  ネットで買えば断然お得!お買い物なら楽天市場
ツールの部屋 - Java関連の書籍 - デザインパターン - 情報交換掲示板 - HOME