JavaA2Z

KAB-studio > プログラミング > JavaA2Z > >>演算子とは

>>演算子

日本語 算術右ビットシフト演算子
英語 signed right shift operator
ふりがな さんじゅつみぎびっとしふとえんざんし
フリガナ サンジュツミギビットシフトエンザンシ

解説

ビットを右にずらす演算子
 
二項演算子のひとつ。ビットシフト演算子のひとつ、右ビットシフト演算子。「算術右シフト」を演算子
整数変数 >> ビット数」という形式で、「ビット数」分だけビットを右にずらすことができる。ずらした値が戻り値として返るためそれを受け取る。「整数変数」には影響しない。
 
スペースが空く左端のビットには、ずらす前に左端のビットにある値が埋められる。0ではないので注意。
 
左端のビットに常に0を挿入したい場合には>>>演算子を使用する。
恐らく「ビットをずらす」という場合には左端に0を挿入した方がいいと思われるため、「>>演算子」より「>>>演算子」を使用することが多いだろう。
 
使用できるのは整数のみで、浮動小数点boolean参照には使用することができない。
Javaでは基本的にビット操作は推奨されず、ビットフラグ等に使用するための目的で整数のみに許されているためである。

参考サイト

  • (参考サイトはありません)

(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // 9。
        long l = 9;
        System.out.println( l );
        outputLongBit( l );
        // 9
        // 0000000000000000000000000000000000000000000000000000000000001001

        // 右に2ビットシフトします。
        l = l >> 2;
        System.out.println( l );
        outputLongBit( l );
        // 2
        // 0000000000000000000000000000000000000000000000000000000000000010

        // -8
        l = -8;
        System.out.println( l );
        outputLongBit( l );
        // -8
        // 1111111111111111111111111111111111111111111111111111111111111000

        // 右に2ビットシフトします。
        // 左端に1が入っていることを確認してください。
        l = l >> 2;
        System.out.println( l );
        outputLongBit( l );
        // -2
        // 1111111111111111111111111111111111111111111111111111111111111110

        // 使えるのは整数値型のみです。
        // 浮動小数点型、boolean型、参照型には使用できません。
        double d = 1.0;
        // d = d >> 2;
        // コンパイルエラー:
        // 演算子 >> は引き数の型 double, int で未定義です。
    }

    /**
    *   long型変数をビット形式で出力します。
    */
    private static void outputLongBit( long l )
    {
        // long型変数をビット形式で文字列化します。
        String source = Long.toBinaryString( l );
        // 左0埋めします。
        StringBuffer strbuf = new StringBuffer();
        forint iF1 = source.length(); iF1 < 64; ++iF1 )
        {
            strbuf.append( "0" );
        }
        strbuf.append( source );

        System.out.println( strbuf.toString() );
    }
}
// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // 9。
        long l = 9;
        System.out.println( l );
        outputLongBit( l );
        // 9
        // 0000000000000000000000000000000000000000000000000000000000001001

        // 右に2ビットシフトします。
        l = l >> 2;
        System.out.println( l );
        outputLongBit( l );
        // 2
        // 0000000000000000000000000000000000000000000000000000000000000010

        // -8
        l = -8;
        System.out.println( l );
        outputLongBit( l );
        // -8
        // 1111111111111111111111111111111111111111111111111111111111111000

        // 右に2ビットシフトします。
        // 左端に1が入っていることを確認してください。
        l = l >> 2;
        System.out.println( l );
        outputLongBit( l );
        // -2
        // 1111111111111111111111111111111111111111111111111111111111111110

        // 使えるのは整数値型のみです。
        // 浮動小数点型、boolean型、参照型には使用できません。
        double d = 1.0;
        // d = d >> 2;
        // コンパイルエラー:
        // 演算子 >> は引き数の型 double, int で未定義です。
    }

    /**
    *   long型変数をビット形式で出力します。
    */
    private static void outputLongBit( long l )
    {
        // long型変数をビット形式で文字列化します。
        String source = Long.toBinaryString( l );
        // 左0埋めします。
        StringBuffer strbuf = new StringBuffer();
        for( int iF1 = source.length(); iF1 < 64; ++iF1 )
        {
            strbuf.append( "0" );
        }
        strbuf.append( source );

        System.out.println( strbuf.toString() );
    }
}

この単語を含むページ

「みだし」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/12/12
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。