CORE
HOME > JAVA > J2SE > CORE
2022.02.28 / 23:58

JAVA(ÀÚ¹Ù) - ÀÌÇ× ¿¬»êÀÚ 5.ºñÆ® ¿¬»êÀÚ(&, |, ^, ~, <<, >>, >>>)

MyData
Ãßõ ¼ö 166


5.ºñÆ® ¿¬»êÀÚ(&, |, ^, ~, <<, >>, >>>)

-ºñÆ®(bit)´ÜÀ§·Î ¿¬»êÀ» ÇÑ´Ù. Áï 0°ú 1ÀÌ ÇÇ¿¬»êÀÚ°¡ µÈ´Ù.

 ¡Ü 0°ú 1·Î Ç¥ÇöÀÌ °¡´ÉÇÑ Á¤¼ö ŸÀÔ¸¸ ºñÆ® ¿¬»êÀ» ÇÒ ¼ö ÀÖ´Ù.

 ¡Ü ½Ç¼ö ŸÀÔÀÎ float°ú doubleÀº ºñÆ® ¿¬»êÀ» ÇÒ ¼ö ¾ø´Ù.

 

-Á¾·ù

 ¡Ü ºñÆ® ³í¸® ¿¬»êÀÚ(&, |, ^, ~)

 ¡Ü ºñÆ® À̵¿ ¿¬»êÀÚ(<<, >>, >>>)

 

ù¹ø° Á¾·ù¿¡ ´ëÇØ ¾Ë¾Æº¾½Ã´Ù.

-ºñÆ® ³í¸® ¿¬»êÀÚ(&, |, ^, ~)

 ¡Ü ÇÇ ¿¬»êÀÚ°¡ booleanŸÀÔÀÏ °æ¿ì -> ÀÏ¹Ý ³í¸® ¿¬»êÀÚ

 ¡Ü ÇÇ ¿¬»êÀÚ°¡ Á¤¼ö ŸÀÔÀÏ °æ¿ì ºñÆ® ³í¸® ¿¬»êÀÚ

±¸ºÐ ¿¬»ê½Ä °á°ú ¼³¸í
AND
(³í¸®°ö)
1 & 1 1 µÎ ºñÆ®°¡ ¸ðµÎ 1ÀÏ °æ¿ì¿¡¸¸ 1ÀÌ´Ù
1 0 0
0 1 0
0 0 0
OR
(³í¸®ÇÕ)
1 | 1 1 µÎ ºñÆ® Áß Çϳª¸¸ 1ÀÌ¿©µµ 1ÀÌ´Ù
1 0 1
0 1 1
0 0 0
XOR
(¹èŸÀû
³í¸®ÇÕ)
1 ^ 1 0 µÎ ºñÆ® Áß Çϳª´Â 1 ÀÌ°í ´Ù¸¥ Çϳª°¡ 0 ÀÏ °æ¿ì 1ÀÌ´Ù
1 0 1
0 1 1
0 0 0
NOT
(³í¸®ºÎÁ¤)
  ~ 1 0 ºÎÁ¤ÇÏ´Ù (¹Ý´ë)
  0 1

 ¡Ü ºñÆ® ¿¬»êÀÚ´Â ÇÇ¿¬»êÀÚ¸¦ intŸÀÔÀ¸·Î ÀÚµ¿ ŸÀÔ º¯È¯ÇÑ ÈÄ ¿¬»êÀ» ¼öÇàÇÑ´Ù.

    byte, short, charŸÀÔÀ» ºñÆ® ³í¸® ¿¬»êÇÏ¸é ±× °á°ú´Â int ŸÀÔÀÌ µÈ´Ù.

    ´ÙÀ½Àº ÄÄÆÄÀÏ ¿¡·¯°¡ ³­´Ù.

byte num1 = 45;
byte num2 = 25;
byte result = num1 & num2; //ÄÄÆÄÀÏ ¿¡·¯ -> int result = num1 & num2;

 

 

	public static void main(String[] args) {
		System.out.println("45&25=" + (45 & 25));
		System.out.println("45|25=" + (45 | 25));
		System.out.println("45^25=" + (45 ^ 25));
		System.out.println("~45=" + (~45));
		
		System.out.println(toBinaryString(45));
		System.out.println("&");
		System.out.println(toBinaryString(25));
		System.out.println("||");
		System.out.println(toBinaryString(45&25));
	}
	public static String toBinaryString(int value) {
		String str = Integer.toBinaryString(value);
		while (str.length() < 32) {
			str = "0" + str;
		}
		return str;
	}
	½ÇÇà ÈÄ °á°ú °ª:
	45 & 25 = 9
	45 | 25 = 61
	45 ^ 25 = 52
	~45 = -46
	00000000000000000000000000101101
	&
	00000000000000000000000000011001
	||
	00000000000000000000000000001001

 

µÎ¹ø° Á¾·ù¿¡ ´ëÇØ ¾Ë¾Æº¾½Ã´Ù.

-ºñÆ® À̵¿(½¬ÇÁÆ®) ¿¬»êÀÚ(<<,>>,>>>)

 ¡Ü Á¤¼ö µ¥ÀÌÅÍÀÇ ºñÆ®¸¦ ÁÂÃø ¶Ç´Â ¿ìÃøÀ¸·Î ¹Ð¾î¼­ À̵¿½ÃÅ°´Â ¿¬»êÀ» ¼öÇà

±¸ºÐ ¿¬»ê½Ä ¼³¸í
À̵¿
(½¬ÇÁÆ®)
a << b Á¤¼ö aÀÇ °¢ ºñÆ®¸¦ b¸¸Å­ ¿ÞÂÊÀ¸·Î À̵¿
(ºóÀÚ¸®´Â 0À¸·Î ä¿öÁø´Ù)
a >> b Á¤¼ö aÀÇ °¢ ºñÆ®¸¦ b¸¸Å­ ¿À¸¥ÂÊÀ¸·Î À̵¿
(ºóÀÚ¸®´Â Á¤¼ö aÀÇ ÃÖ»óÀ§ ºÎÈ£ºñÆ®(MSB)¿Í °°Àº °ªÀ¸·Î ä¿öÁø´Ù)  ¡ØMSB : ¾ç¼ö´Â 0ÀÌ°í À½¼ö´Â 1ÀÌ´Ù
a >>> b Á¤¼ö aÀÇ °¢ ºñÆ®¸¦ b¸¸Å­ ¿À¸¥ÂÊÀ¸·Î À̵¿
(ºóÀÚ¸®´Â 0À¸·Î ä¿öÁø´Ù)
	public class BitShiftExample {

	public static void main(String[] args) {
		System.out.println("1<<3= " + (1 << 3));
		System.out.println("-8>>3= " + (-8 >> 3));
		System.out.println("-8>>>3= " + (-8 >>> 3));
		System.out.println();
		System.out.println(toBinaryString(-8));
		System.out.println(">>3=");
		System.out.println(toBinaryString(-8 >> 3));
		System.out.println();
		System.out.println(toBinaryString(-8));
		System.out.println(">>>3=");
		System.out.println(toBinaryString(-8 >>> 3));
	}

	public static String toBinaryString(int value) {
		String str = Integer.toBinaryString(value);
		while (str.length() < 32) {
			str = "0" + str;

		}
		return str;
	}
	½ÇÇà ÈÄ °á°ú °ª:
	1<<3= 8
	-8>>3= -1
	-8>>>3= 536870911

	11111111111111111111111111111000
	>>3=
	11111111111111111111111111111111

	11111111111111111111111111111000
	>>>3=
	00011111111111111111111111111111