^演算子
日本語 | 排他的ビット和演算子 |
英語 | caret operator |
ふりがな | はっとえんざんし |
フリガナ | ハットエンザンシ |
2つの整数値を比較し、両ビットが異なる1にする演算子。
二項演算子のひとつ。
ビット単位での排他的論理和(XOR)を取る演算子。整数値2つを評価し、整数値を返す。左オペランドと右オペランドの同位置のビットを比較し、両ビットが異なれば1に、それ以外は0にして返す。
ある整数値と、特定の1ビットのみ1の数値を使って^演算子を使用すると、特定のビットの1と0を切り替えることができる。
そのため、&演算子、|演算子と共に、ビットフラグの処理に使用されることが多い。
二項演算子のひとつ。
ビット単位での排他的論理和(XOR)を取る演算子。整数値2つを評価し、整数値を返す。左オペランドと右オペランドの同位置のビットを比較し、両ビットが異なれば1に、それ以外は0にして返す。
ある整数値と、特定の1ビットのみ1の数値を使って^演算子を使用すると、特定のビットの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
// ^演算子で、各ビットのXORを取ります。
System.out.println( getIntBit( iL ^ iR ) );
// 00000000000000000000000000000110
// このように、ビットが異なるものは1、
// それ以外は0になります。
// この^演算子を使えば、好きなビットの
// 1と0を切り替えられます。
}
/**
* 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
// ^演算子で、各ビットのXORを取ります。
System.out.println( getIntBit( iL ^ iR ) );
// 00000000000000000000000000000110
// このように、ビットが異なるものは1、
// それ以外は0になります。
// この^演算子を使えば、好きなビットの
// 1と0を切り替えられます。
}
/**
* 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 // ^演算子で、各ビットのXORを取ります。 System.out.println( getIntBit( iL ^ iR ) ); // 00000000000000000000000000000110 // このように、ビットが異なるものは1、 // それ以外は0になります。 // この^演算子を使えば、好きなビットの // 1と0を切り替えられます。 } /** * 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(); } }