|演算子
日本語 | 縦棒演算子 |
英語 | vertical bar operator、pipe operator |
ふりがな | たてぼうえんざんし、ぱいぷえんざんし |
フリガナ | タテボウエンザンシ、パイプエンザンシ |
2つの整数値を比較し、どちらかのビットが1なら1にする演算子。
二項演算子のひとつ。
ビット単位での論理和を取る演算子。整数値2つを評価し、整数値を返す。左オペランドと右オペランドの同位置のビットを比較し、どちらかのビットが1であれば1、両ビットとも0であれば0にして返す。
|演算子を使用すると、特定のビットのみ1の整数値「ビットフラグ」をふたつ以上組み合わせて「複数のビットフラグが立っている状態」にすることができる。
そのため、&演算子と共に、ビットフラグの処理に使用されることが多い。
二項演算子のひとつ。
ビット単位での論理和を取る演算子。整数値2つを評価し、整数値を返す。左オペランドと右オペランドの同位置のビットを比較し、どちらかのビットが1であれば1、両ビットとも0であれば0にして返す。
|演算子を使用すると、特定のビットのみ1の整数値「ビットフラグ」をふたつ以上組み合わせて「複数のビットフラグが立っている状態」にすることができる。
そのため、&演算子と共に、ビットフラグの処理に使用されることが多い。
参考サイト
- (参考サイトはありません)
// Sample.java
public class Sample
{
public static void main( String[] args )
{
int iL = 0x5;
int iR = 0x3;
System.out.println( getIntBit( iL ) );
System.out.println( getIntBit( iR ) );
// 00000000000000000000000000000101
// 00000000000000000000000000000011
// |演算子で、各ビットのORを取ります。
System.out.println( getIntBit( iL | iR ) );
// 00000000000000000000000000000111
// このように、両方とも0のビットののみ0、
// それ以外は1になります。
// |演算子は、ビットフラグをくっつけるときに
// 使います。
iL = 0x4;
iR = 0x8;
System.out.println( getIntBit( iL ) );
System.out.println( getIntBit( iR ) );
// 00000000000000000000000000000100
// 00000000000000000000000000001000
// 0x4は右から3ビット目だけ、
// 0x8は右から4ビット目だけが1になっています。
// このふたつを組み合わせます。
System.out.println( getIntBit( iL | iR ) );
// 00000000000000000000000000001100
// このように、|演算子でビットを融合させることができます。
}
/**
* int型変数をビット形式で返します。
*/
private static String getIntBit( int i )
{
// int型変数をビット形式で文字列化します。
String source = Integer.toBinaryString( i );
// 左0埋めします。
StringBuffer strbuf = new StringBuffer();
for( int iF1 = source.length(); iF1 < 32; ++iF1 )
{
strbuf.append( "0" );
}
strbuf.append( source );
return strbuf.toString();
}
}
public class Sample
{
public static void main( String[] args )
{
int iL = 0x5;
int iR = 0x3;
System.out.println( getIntBit( iL ) );
System.out.println( getIntBit( iR ) );
// 00000000000000000000000000000101
// 00000000000000000000000000000011
// |演算子で、各ビットのORを取ります。
System.out.println( getIntBit( iL | iR ) );
// 00000000000000000000000000000111
// このように、両方とも0のビットののみ0、
// それ以外は1になります。
// |演算子は、ビットフラグをくっつけるときに
// 使います。
iL = 0x4;
iR = 0x8;
System.out.println( getIntBit( iL ) );
System.out.println( getIntBit( iR ) );
// 00000000000000000000000000000100
// 00000000000000000000000000001000
// 0x4は右から3ビット目だけ、
// 0x8は右から4ビット目だけが1になっています。
// このふたつを組み合わせます。
System.out.println( getIntBit( iL | iR ) );
// 00000000000000000000000000001100
// このように、|演算子でビットを融合させることができます。
}
/**
* int型変数をビット形式で返します。
*/
private static String getIntBit( int i )
{
// int型変数をビット形式で文字列化します。
String source = Integer.toBinaryString( i );
// 左0埋めします。
StringBuffer strbuf = new StringBuffer();
for( int iF1 = source.length(); iF1 < 32; ++iF1 )
{
strbuf.append( "0" );
}
strbuf.append( source );
return strbuf.toString();
}
}
// Sample.java public class Sample { public static void main( String[] args ) { int iL = 0x5; int iR = 0x3; System.out.println( getIntBit( iL ) ); System.out.println( getIntBit( iR ) ); // 00000000000000000000000000000101 // 00000000000000000000000000000011 // |演算子で、各ビットのORを取ります。 System.out.println( getIntBit( iL | iR ) ); // 00000000000000000000000000000111 // このように、両方とも0のビットののみ0、 // それ以外は1になります。 // |演算子は、ビットフラグをくっつけるときに // 使います。 iL = 0x4; iR = 0x8; System.out.println( getIntBit( iL ) ); System.out.println( getIntBit( iR ) ); // 00000000000000000000000000000100 // 00000000000000000000000000001000 // 0x4は右から3ビット目だけ、 // 0x8は右から4ビット目だけが1になっています。 // このふたつを組み合わせます。 System.out.println( getIntBit( iL | iR ) ); // 00000000000000000000000000001100 // このように、|演算子でビットを融合させることができます。 } /** * int型変数をビット形式で返します。 */ private static String getIntBit( int i ) { // int型変数をビット形式で文字列化します。 String source = Integer.toBinaryString( i ); // 左0埋めします。 StringBuffer strbuf = new StringBuffer(); for( int iF1 = source.length(); iF1 < 32; ++iF1 ) { strbuf.append( "0" ); } strbuf.append( source ); return strbuf.toString(); } }