2016.04.03
Javaプログラミング
ビットシフト(bit shift)
ビットシフトには、右にビットの並びをずらす右シフトと、左にずらす左シフトがあります。
①右シフト
すべてのビットを右にずらします。演算子は、">>"です。
②左シフト
すべてのビットを左にずらします。演算子は、"<<"です。
条件によって、1回の左シフトには2を掛けるのと同じ計算になります。
ここでの条件は、計算する値が整数型で、正の整数であることです。
ただし、最上位ビットが1の場合にマイナスの値になるので、シフトの回数が多いとマイナスの値になってしまいます。
BitOperator.java
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017
public class BitOperator { public static void main( String[] args ) { int a = 14; // 2進数 1110 int b = 5; // 2進数 0101 int and = a & b; // AND int or = a | b; // OR int xor = a ^ b; // XOR int not = ~a; // NOT //結果を表示 System.out.println( a + " AND " + b + " = " + and ); System.out.println( a + " OR " + b + " = " + or ); System.out.println( a + " XOR " + b + " = " + xor ); System.out.println( "NOT " + a + " = " + not ); } }
コンパイル ソースコードが「ANSI」の場合
C:\talavax\javasample>javac -encoding sjis BitOperator.java
コンパイル ソースコードが「UTF-8」の場合
C:\talavax\javasample>javac BitOperator.java
実行
C:\talavax\javasample>java BitOperator
出力結果
14 AND 5 = 4 14 OR 5 = 15 14 XOR 5 = 11 NOT 14 = -15
Javaソースコードの解説
ここからは、このソースコードを上から順番に解説していきます。
001
public class BitOperator {
クラス名を、BitOperatorとしています。
002
public static void main( String[] args ) {
このmainメソッドからプログラムを実行します。
003 004
int a = 14; // 2進数 1110 int b = 5; // 2進数 0101
006 007 008
int and = a & b; // AND int or = a | b; // OR int xor = a ^ b; // XOR
009
int not = ~a; // NOT
011 012 013 014 015
//結果を表示 System.out.println( a + " AND " + b + " = " + and ); System.out.println( a + " OR " + b + " = " + or ); System.out.println( a + " XOR " + b + " = " + xor ); System.out.println( "NOT " + a + " = " + not );
最後に演算結果を表示しています。
以上です。
前のコンテンツ
数値を2進数で表したときの各桁の「0」と「1」に対して演算を行えます。4種類の演算、AND(論理積)、OR(論理和)、XOR(排他的論理和)、NOT(否定)を詳しく説明しています。
2016.03.26
関連コンテンツ
数値を2進数で表したときの各桁の「0」と「1」に対して演算を行えます。4種類の演算、AND(論理積)、OR(論理和)、XOR(排他的論理和)、NOT(否定)を詳しく説明しています。
2016.03.26