ビット排他的論理和演算子「^」とは、ビット単位で、排他的論理和(XOR)の処理を行う演算子のこと。
左右のオペランド(演算子引数)の値を2進数に変換し、各桁(ビット)の数値(「0」か「1」)の、どちらか一方が「1」である桁を「1」とする。共に「0」である桁と、共に「1」である桁は、「0」とする。最後に、演算結果を10進数に戻す。
構文
結果 = 値1 ^ 値2;
結果 = 式1 ^ 式2;
サンプル
10進数
2進数
解説
「5」を、2進数で表すと「101」。「9」を、2進数で表すと「1001」。どちらか一方が「1」である桁は、3桁目と4桁目なので、5 ^ 9
は、「12」(2進数で表すと「1100」)になる。
ソースコード
<style type="text/css">
<!--
.sampleItem div {
float: left;
width: 60px;
text-align: right;
}
-->
</style>
<div class="sampleItem">
<div>10進数</div>
<div>2進数</div>
</div>
<div style="clear: left;"></div>
<script type="text/javascript">
var sampleA = 5;
var sampleB = 9;
var sampleC = sampleA ^ sampleB;
document . write( "<div class=\"sampleItem\">" );
document . write( "<div>" + sampleA + "</div>" );
document . write( "<div>" + sampleA . toString(2) + "</div>" );
document . write( "</div>" );
document . write( "<div style=\"clear: left;\"></div>" );
document . write( "<div class=\"sampleItem\">" );
document . write( "<div>" + sampleB + "</div>" );
document . write( "<div>" + sampleB . toString(2) + "</div>" );
document . write( "</div>" );
document . write( "<div style=\"clear: left;\"></div>" );
document . write( "<div class=\"sampleItem\">" );
document . write( "<div>" + sampleC + "</div>" );
document . write( "<div>" + sampleC . toString(2) + "</div>" );
document . write( "</div>" );
document . write( "<div style=\"clear: left;\"></div>" );
</script>
<!--
.sampleItem div {
float: left;
width: 60px;
text-align: right;
}
-->
</style>
<div class="sampleItem">
<div>10進数</div>
<div>2進数</div>
</div>
<div style="clear: left;"></div>
<script type="text/javascript">
var sampleA = 5;
var sampleB = 9;
var sampleC = sampleA ^ sampleB;
document . write( "<div class=\"sampleItem\">" );
document . write( "<div>" + sampleA + "</div>" );
document . write( "<div>" + sampleA . toString(2) + "</div>" );
document . write( "</div>" );
document . write( "<div style=\"clear: left;\"></div>" );
document . write( "<div class=\"sampleItem\">" );
document . write( "<div>" + sampleB + "</div>" );
document . write( "<div>" + sampleB . toString(2) + "</div>" );
document . write( "</div>" );
document . write( "<div style=\"clear: left;\"></div>" );
document . write( "<div class=\"sampleItem\">" );
document . write( "<div>" + sampleC + "</div>" );
document . write( "<div>" + sampleC . toString(2) + "</div>" );
document . write( "</div>" );
document . write( "<div style=\"clear: left;\"></div>" );
</script>
ビット排他的論理和演算子と代入演算子の複合
ビット排他的論理和演算子は、代入演算子と合成することができる。
変数 ^= 値;
変数 = 変数 ^ 値;
と同じ結果が得られる。
ビット排他的論理和演算子と代入演算子の複合代入演算子であるビット排他的論理和代入演算子についてはこちら。