Bitwise ~ & |
Bit Shift << >> >>>

Bitwise ve Bit shift operatörleri genellikle az kullanılır.Bu operatörleri BitwiseAndBitShift.java adlı örnek uygulamasından öğrenebilirsiniz.Örneğin çıktısı şöyle;

a :00000000000000000000000010000000

~a :11111111111111111111111101111111

a :00000000000000000000000010000000

b :00000000000000000000000011001011

-------------------------------------

a&b :00000000000000000000000010000000

a|b :00000000000000000000000011001011

a^b :00000000000000000000000001001011

a<<1 :00000000000000000000000100000000

b>>2 :00000000000000000000000000110010

a>>>3:00000000000000000000000000010000

Bu çıktı üzerinden de işlemler kolayca anlaşılabilir:

~ operatörü bitleri tersine çevirir birler sıfır,sıfırlar bir olur.

& operatörü iki operantı and(ve) işlemine tabi tutar.

operatörü iki operantı or(veya) işlemine tabi tutar.

^ operatörü iki operantı xor işlemine tabi tutar.a ve b aynı biti taşıyorsa 0 taşımıyorsa 1 atar.

« operatörü sağındaki operand kadar sola bit kaydırır.Örneğin a«1 ifadesi a’nın bitlerini 1 bit sola kaydıracaktır.

operatörü sağındaki operand kadar sağa bit kaydırır.

operatörü sağındaki operand kadar sağa kaydırır ve soldan kalan yerlere 0 bitini atar.

BitwiseAndBitShift.java dosyası, çıktı formatının anlaşılabilir olması için şuana kadar değinmediğim dönüşüm ve formatlama işlemlerini barındırıyor.Bu kısımları atlayabilirsiniz.

/*
 * www.akursat.com
 * @author   Adem Kürşat Uzun
 */

public class BitwiseAndBitShift {

	public static void main(String[] args) {

		// java se 7 ile gelen 0b literalini kullanarak sayi atama.
		int a = 0b1000_0000;
		int a_t = ~a; // 0b0111_1111;

		int b = 0b1100_1011;

		int c = 0;

		/*
		 * Integer.toString,String.format metotlarını sayı gösteriminde,boşluk
		 * yerine 0 yazması için kullandım.Bu metotları
		 * kullanmayabilirsiniz.Çıktının düzenli tutulması ve kolay
		 * anlaşılabilmesi için yazıldı.
		 */

		String astr = Integer.toString(a);
		String a_tstr = Integer.toString(a_t);
		String bstr = Integer.toString(b);

		String andStr = Integer.toBinaryString(c);
		String orStr = Integer.toBinaryString(c);
		String xorStr = Integer.toBinaryString(c);
		String leftShift = Integer.toBinaryString(c);
		String rightShift = Integer.toBinaryString(c);
		String rightZero = Integer.toBinaryString(c);

		astr = astr.format("%32s", Integer.toBinaryString(a)).replace(" ", "0");
		bstr = bstr.format("%32s", Integer.toBinaryString(b)).replace(" ", "0");

		a_tstr = astr.format("%32s", Integer.toBinaryString(a_t)).replace(" ",
				"0");

		// a ve b sayılarını mantıktaki and işlemine tabi tutar.
		c = a & b;
		andStr = andStr.format("%32s", Integer.toBinaryString(c)).replace(" ",
				"0");

		// a ve b sayılarını mantıktaki or işlemine tabi tutar.
		c = a | b;
		orStr = orStr.format("%32s", Integer.toBinaryString(c)).replace(" ",
				"0");

		// a ve b sayılarını mantıktaki xor işlemine tabi tutar.
		c = a ^ b;
		xorStr = orStr.format("%32s", Integer.toBinaryString(c)).replace(" ",
				"0");

		// a sayısının bitlerini 1 bit sola kaydırır.(İstediğiniz koşulu
		// girebilirsiniz örn 2,3 vb)
		c = a << 1;
		leftShift = leftShift.format("%32s", Integer.toBinaryString(c))
				.replace(" ", "0");

		// b sayısın bitlerini 2 bit sağa kaydırır.(İstediğiniz koşulu
		// girebilirsiniz örn 2,3 vb)
		c = b >> 2;
		rightShift = rightShift.format("%32s", Integer.toBinaryString(c))
				.replace(" ", "0");

		// a sayısının bitlerini 3 sağa kaydırır ve kaydırdığı basamak kadar 0
		// ekler(soldan)
		c = a >>> 3;
		rightZero = rightZero.format("%32s", Integer.toBinaryString(c))
				.replace(" ", "0");

		System.out.println("a    :" + astr);
		System.out.println("~a   :" + a_tstr);

		System.out.println("");
		System.out.println("a    :" + astr);
		System.out.println("b    :" + bstr);
		System.out.println("-------------------------------------");
		System.out.println("a&b  :" + andStr);
		System.out.println("a|b  :" + orStr);
		System.out.println("a^b  :" + xorStr);
		System.out.println("a<<1 :" + leftShift);
		System.out.println("b>>2 :" + rightShift);
		System.out.println("a>>>3:" + rightZero);

	}
}

Bir sonraki yazı 8.4 instanceof Operatörü