&演算子
日本語 | ビット積演算子 |
英語 | and per se and operator |
ふりがな | あんどえんざんし、あんぱさんどえんざんし |
フリガナ | アンドエンザンシ、アンパサンドエンザンシ |
2つの整数値を比較し、両ビットとも1なら1にする演算子。
二項演算子のひとつ。
ビット単位での論理積を取る演算子。整数値2つを評価し、整数値を返す。左オペランドと右オペランドの同位置のビットを比較し、両ビットとも1であれば1、それ以外は0にして返す。
ある整数値と、特定の1ビットのみ1の数値を使って&演算子を使用すると、その結果は、ある整数値のそのビットが0であれば0、1であれば0以外が返ってくる。このように、特定のビットが1か0かを判定する場合に使用されることが多い。
そのため、|演算子と共に、ビットフラグの処理に使用されることが多い。
二項演算子のひとつ。
ビット単位での論理積を取る演算子。整数値2つを評価し、整数値を返す。左オペランドと右オペランドの同位置のビットを比較し、両ビットとも1であれば1、それ以外は0にして返す。
ある整数値と、特定の1ビットのみ1の数値を使って&演算子を使用すると、その結果は、ある整数値のそのビットが0であれば0、1であれば0以外が返ってくる。このように、特定のビットが1か0かを判定する場合に使用されることが多い。
そのため、|演算子と共に、ビットフラグの処理に使用されることが多い。
参考サイト
- (参考サイトはありません)
// 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
// &演算子で、各ビットのANDを取ります。
System.out.println( getIntBit( iL & iR ) );
// 00000000000000000000000000000001
// このように、両方とも1のビットののみ1、
// それ以外は0になります。
// たとえば、右から3番目のビットが1か0か
// 調べる場合。0100 == 0x4を使用します。
if( ( iL & 0x4 ) == 0 )
{
System.out.println( "オフ" );
}
else
{
System.out.println( "オン" );
}
// オン
if( ( iR & 0x4 ) == 0 )
{
System.out.println( "オフ" );
}
else
{
System.out.println( "オン" );
}
// オフ
}
/**
* 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
// &演算子で、各ビットのANDを取ります。
System.out.println( getIntBit( iL & iR ) );
// 00000000000000000000000000000001
// このように、両方とも1のビットののみ1、
// それ以外は0になります。
// たとえば、右から3番目のビットが1か0か
// 調べる場合。0100 == 0x4を使用します。
if( ( iL & 0x4 ) == 0 )
{
System.out.println( "オフ" );
}
else
{
System.out.println( "オン" );
}
// オン
if( ( iR & 0x4 ) == 0 )
{
System.out.println( "オフ" );
}
else
{
System.out.println( "オン" );
}
// オフ
}
/**
* 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 // &演算子で、各ビットのANDを取ります。 System.out.println( getIntBit( iL & iR ) ); // 00000000000000000000000000000001 // このように、両方とも1のビットののみ1、 // それ以外は0になります。 // たとえば、右から3番目のビットが1か0か // 調べる場合。0100 == 0x4を使用します。 if( ( iL & 0x4 ) == 0 ) { System.out.println( "オフ" ); } else { System.out.println( "オン" ); } // オン if( ( iR & 0x4 ) == 0 ) { System.out.println( "オフ" ); } else { System.out.println( "オン" ); } // オフ } /** * 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(); } }