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