[JAVA] μ—°μ‚°μž(Operator)

2021. 2. 4. 08:00γ†κ°œλ… 정리 μž‘μ—…μ‹€/Java

728x90
λ°˜μ‘ν˜•

πŸ“Œ μ—°μ‚°μž(Operator)

    πŸ“ λŒ€μž… μ—°μ‚°μž

         πŸ‘‰ Data Type을 μ„ μ–Έν•˜κ³ , λ³€μˆ˜λͺ…을 μ„ μ–Έν•œλ’€ =을 λ„£κ³ , λ³€μˆ˜ 값을 λ„£μ—ˆμ„ λ•Œ, '='이 λŒ€μž… μ—°μ‚°μž μž…λ‹ˆλ‹€.

        πŸ‘‰ λŒ€μž… μ—°μ‚°μžλŠ” 였λ₯Έμͺ½μ˜ λ³€μˆ˜ 값을 μ™Όμͺ½μ˜ λ³€μˆ˜λͺ…에 λ„£κ² λ‹€λŠ” 의미 μž…λ‹ˆλ‹€.

int i = 1; // intλŠ” Data Type이며, iλŠ” λ³€μˆ˜λͺ… 그리고, 1은 λ³€μˆ˜κ°’μ΄λ‹€. '='은 λŒ€μž… μ—°μ‚°μžλ‘œ 였λ₯Έμͺ½μ˜ λ³€μˆ˜κ°’μ„ μ™Όμͺ½ λ³€μˆ˜λͺ…에 λ„£κ² λ‹€λŠ” 의미.

 

 

 

    πŸ“ 비ꡐ μ—°μ‚°μž

     πŸ‘‰ 비ꡐ μ—°μ‚°μž μ’…λ₯˜

           --> [ == ]은 같은가? λΌλŠ” 의미 μž…λ‹ˆλ‹€. 즉, μˆ˜ν•™μ—μ„œλŠ” =κ³Ό κ°™μœΌλ©°, μ½”λ”©μ—μ„œ =λŠ” 이미 λŒ€μž… μ—°μ‚°μžλ‘œ μ“°κ³ 

                μžˆκΈ° λ•Œλ¬Έμ— ==을 λΆ™ν˜€μ€λ‹ˆλ‹€.

           --> [ != ]은 같지 μ•Šλ‹€λ©΄? μ΄λΌλŠ” 의미 μž…λ‹ˆλ‹€.

           --> [ > ] λŠ” 였λ₯Έμͺ½λ³΄λ‹€ μ™Όμͺ½μ΄ 큰가? λΌλŠ” 의미 μž…λ‹ˆλ‹€.

           --> [ < ]λŠ” μ™Όμͺ½λ³΄λ‹€ 였λ₯Έμͺ½μ΄ 큰가? λΌλŠ” 의미 μž…λ‹ˆλ‹€.

           --> [ <= ]λŠ” μ™Όμͺ½λ³΄λ‹€ 였λ₯Έμͺ½μ΄ ν¬κ±°λ‚˜, κ°™λ‹€ μž…λ‹ˆλ‹€.

           --> [ >= ]λŠ” μ™Όμͺ½μ΄ 였λ₯Έμͺ½λ³΄λ‹€ ν¬κ±°λ‚˜, κ°™λ‹€ μž…λ‹ˆλ‹€.

              πŸ’‘ μ½”λ“œ μ˜ˆμ‹œ

public class ComparisonOperator {

	public staic void main(String[] args) {
    	int x = 3;
        int y = 4;
        
        // μ°Έκ³ : printλŠ” 였λ₯Έμͺ½μœΌλ‘œ μ΄μ–΄μ„œ 좜λ ₯ν•˜λ©°, + " "λ₯Ό ν•΄μ€€ μ΄μœ λŠ” 곡백을 λ§Œλ“€κΈ° μœ„ν•¨.
        
        System.out.print((x == y) + " "); // κ²°κ³Ό False
        System.out.print((x != y) + " "); // κ²°κ³Ό True
        System.out.print((x > y) + " "); // κ²°κ³Ό False
        System.out.print((x < y) + " "); // κ²°κ³Ό True
        System.out.print((x <= y) + " "); // κ²°κ³Ό True
        System.out.print((x >= y) + " "); // κ²°κ³Ό False
        
        }
        
 }

 

 

    πŸ“ λΉ„νŠΈ μ—°μ‚°μž

         πŸ‘‰ 2μ§„μˆ˜ 16진법 ν‘œκΈ°λ²•

           --> λΉ„νŠΈ μ—°μ‚°μžλ₯Ό μ†Œκ°œν•˜κΈ° μ „ 2μ§„μˆ˜ 16진법에 λŒ€ν•΄ 이해할 ν•„μš”κ°€ μžˆλŠ” κ²ƒμ΄μ—μš”.

                 0x0fffλŠ” 2μ§„μˆ˜λ‘œ 풀어보면 00000000 11111111 111111111 11111111인 κ²ƒμ΄μ—μš”.

                λ˜ν•œ, 0xfff0은 2μ§„μˆ˜λ‘œ 풀어보면 11111111 11111111 11111111 00000000인 κ²ƒμ΄μ—μš”.

               μ—¬κΈ°μ„œ 0xλŠ” 16진법을 λ‚˜νƒ€λ‚΄λŠ” κ²ƒμ΄μ—μš”.

              10μ§„μˆ˜μ™€ 16진법 κ΄€κ³„λŠ” μ•„λž˜μ™€ 같은 κ²ƒμ΄μ—μš”.

더보기

                     10 진법 1 = 16진법 1

                     10 진법 2 = 16진법 2

                     10 진법 3 = 16진법 3

                     10 진법 4 = 16진법 4

                     10 진법 5 = 16진법 5

                     10 진법 6 = 16진법 6

                     10 진법 7 = 16진법 7

                     10 진법 8 = 16진법 8

                     10 진법 9 = 16진법 9

                     10 진법 10 = 16진법 A

                     10 진법 11 = 16진법 B

                   10 진법 12 = 16진법 C

                   10 진법 13 = 16진법 D

                   10 진법 14 = 16진법 E

                   10 진법 15 = 16진법 F

 

         πŸ‘‰ λΉ„νŠΈ μ—°μ‚°μž μ’…λ₯˜

           --> [ ~ ]은 NOT μ΄λΌλŠ” 의미 μž…λ‹ˆλ‹€.

           --> [ & ]λŠ” AND μž…λ‹ˆλ‹€. μ’Œν•­κ³Ό μš°ν•­μ΄ λͺ¨λ‘ 참일 λ•Œλ§Œ 참이 되며, ν•˜λ‚˜λΌλ„ 거짓일 경우 거짓이 λ©λ‹ˆλ‹€.

           --> [ ^ ]λŠ” XOR μ—°μ‚°μž μž…λ‹ˆλ‹€. μ’Œν•­κ³Ό μš°ν™©μ΄ 각각 λ‹€λ₯Ό λ•Œ 즉, μ’Œν•­μ€ μ°Έ, μš°ν•­μ€ 거짓 ν˜Ήμ€

                      κ·Έ λ°˜λŒ€μΌ κ²½μš°μ—λ§Œ 참이 되고, 같을 경우 거짓이 λ©λ‹ˆλ‹€.

           --> [ | ]λŠ” OR μž…λ‹ˆλ‹€. μ’Œν•­κ³Ό μš°ν•­μ΄ μ„œλ‘œ 달라도 참이되고, 같아도 참이 λ©λ‹ˆλ‹€. λ‘˜ λ‹€ 거짓일 땐 κ±°μ§“μž…λ‹ˆλ‹€.

           --> [ << ]λŠ” x << y μΌλ•Œ, x 값을 2μ§„μˆ˜ 32bit둜 μͺΌκ°  λ’€ y만큼 였λ₯Έμͺ½μœΌλ‘œ μ΄λ™ν•œλ‹€λŠ” 의미 μž…λ‹ˆλ‹€.

                        (빈 μžλ¦¬λŠ” 0으둜 μ±„μ›Œμ§)

           --> [ >> ]λŠ” x >> y μΌλ•Œ, x값을 2μ§„μˆ˜ 32bit둜 μͺΌκ°  λ’€ y만큼 μ™Όμͺ½μœΌλ‘œ μ΄λ™ν•œλ‹€λŠ” 의미 μž…λ‹ˆλ‹€.

                        (빈 μžλ¦¬λŠ” 0으둜 μ±„μ›Œμ§)

           --> [ >>> ]λŠ” x >>> y μΌλ•Œ, x값을 2μ§„μˆ˜ 32bit둜 μͺΌκ°  λ’€ y만큼 μ™Όμͺ½μœΌλ‘œ μ΄λ™ν•œλ‹€λŠ” 의미 μž…λ‹ˆλ‹€.

                        (빈 μžλ¦¬λŠ” 0으둜 μ±„μ›Œμ§) μœ„μ˜ [<<]와 λ‹€λ₯Έμ μ€ >>λŠ” λΆ€ν˜ΈλΉ„νŠΈλ₯Ό μžμ‹ μ΄ 가지고 μžˆμ—ˆλ˜ 값을 κ·ΈλŒ€λ‘œ

                        μ±„μš°μ§€λ§Œ, 이것은 무쑰건 0으둜 μ±„μ›Œμ§‘λ‹ˆλ‹€.

                            

더보기

                           πŸ’‘ μ˜ˆμ‹œ

                              - [ 2 << 3 ] 일 λ•Œ, 2λ₯Ό 2μ§„μˆ˜ 32bit둜 μͺΌκ°œλ©΄ μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

                                  00000000 00000000 00000000 00000010

                                  μ΄κ²ƒμ„ 3만큼 μ™Όμͺ½μœΌλ‘œ 이동을 ν•˜λ©΄ μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

                                   00000000 00000000 00000000 00010000

                                   μ¦‰, 16이 되고, 였λ₯Έμͺ½μ— 3bitλŠ” 0으둜 μ±„μ›Œμ§‘λ‹ˆλ‹€.

 

                             - [ 16 >> 3 ] 일 λ•Œ, 16을 2μ§„μˆ˜ 32bit둜 μͺΌκ°œλ©΄ μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

                                   00000000 00000000 00000000 00010000

                                  μ΄κ²ƒμ„ 3만큼 였λ₯Έμͺ½μœΌλ‘œ 이동을 ν•˜λ©΄ μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

                                  00000000 00000000 00000000 00000010

                                   μ¦‰, 2κ°€ 되고, μ™Όμͺ½μ— 3bitλŠ” 0으둜 μ±„μ›Œμ§‘λ‹ˆλ‹€.

 

                             - [ -16 >> 3 ] 일 λ•Œ, -16을 2μ§„μˆ˜ 32bit둜 μͺΌκ°œλ©΄ μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

                                   11111111 11111111 11111111 11110000

                                  μŒμˆ˜ 일 λ•Œ, μ•žμ˜ λͺ¨λ“  μˆ˜λŠ” λΆ€ν˜ΈλΉ„νŠΈλ‘œ 인해 1이 λ©λ‹ˆλ‹€.

                                  μ΄κ²ƒμ„ 3만큼 였λ₯Έμͺ½μœΌλ‘œ 이동을 ν•˜λ©΄ μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

                                   11111111 11111111 11111111 11111110

                                   μ¦‰, -2κ°€ 되고, μ™Όμͺ½μ— 3bitλŠ” 1둜 μ±„μ›Œμ§‘λ‹ˆλ‹€.

 

                             - [ -16 >>> 3 ] 일 λ•Œ, -16을 2μ§„μˆ˜ 32bit둜 μͺΌκ°œλ©΄ μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

                                   11111111 11111111 11111111 11110000

                                  μ΄κ²ƒμ„ 3만큼 였λ₯Έμͺ½μœΌλ‘œ 이동을 ν•˜λ©΄ μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

                                   00011111 11111111 11111111 11111110

                                   μ•žμ˜ λΉ„νŠΈλŠ” λΆ€ν˜Έ λΉ„νŠΈμ™€ 관계 없이 무쑰건 0으둜 μ±„μ›Œμ§€κΈ° λ•Œλ¬Έμ— μ–‘μˆ˜κ°€ λ©λ‹ˆλ‹€.

                                   이 μˆ˜λŠ” '536870910'이 λ©λ‹ˆλ‹€.

           πŸ’‘ μ˜ˆμ‹œ μ½”λ“œ

public class bitoperator {

	public static void main(String[] args) {
    	int x = 0x0fff;
        int y = 0xfff0;
        
        // μ—¬κΈ°μ„œ printf λŠ” format을 좜λ ₯ν•˜κ² λ‹€λŠ” 의미.
        // %xλŠ” HEX 즉, 16진법 Format이고, %dλŠ” declmal 10진법 Format 즉, x & y의 κ²°κ³Όλ₯Ό %x둜 λ°›κ² λ‹€λŠ” 의미이고, \n은 κ°œν–‰(Enter)의 의미.
        System.out.printf("%x\n", (x & y)) ; // κ²°κ³Ό 0ff0 
        System.out.printf("%x\n", (x | y)) ; // κ²°κ³Ό ffff
        System.out.printf("%x\n", (x ^ y)) ; // κ²°κ³Ό f00f
        System.out.printf("%x\n", ~x) ; // κ²°κ³Ό f000
        System.out.printf("%x\n", (x << 4)) ; // κ²°κ³Ό fff0
        System.out.printf("%x\n", (x >> 4)) ; // κ²°κ³Ό ff
        System.out.printf("%x\n", (-1 >>> 4)) ; // κ²°κ³Ό fffffff
        
        }
        
}
        

 

    πŸ“ 논리 μ—°μ‚°μž

     πŸ‘‰ 논리 μ—°μ‚°μž μ’…λ₯˜

           --> [ == ]은 'κ°™λ‹€'λΌλŠ” 의미 μž…λ‹ˆλ‹€.

           --> [ && ]λŠ” AND μž…λ‹ˆλ‹€. μ’Œν•­κ³Ό μš°ν•­μ΄ λͺ¨λ‘ 참일 λ•Œλ§Œ 참이 되며, ν•˜λ‚˜λΌλ„ 거짓일 경우 거짓이 λ©λ‹ˆλ‹€.

           --> [ || ]λŠ” OR μž…λ‹ˆλ‹€. μ’Œν•­κ³Ό μš°ν•­μ΄ ν•˜λ‚˜λΌλ„ 참일 경우 참이 되며, λͺ¨λ‘ 참일 λ•Œλ„ 참이고, λͺ¨λ‘ 거짓일 경우 κ±°μ§“이 λ©λ‹ˆλ‹€.

 

           πŸ’‘ μ˜ˆμ‹œ μ½”λ“œ

public class LogicalOperator {

	public static void main(String[] args) {
    	int x = 3;
        int y = 4;
        
        System.out.println((x == 3) && (y == 7)); // κ²°κ³Ό False (xκ°€ 3κ³Ό κ°™κ³ , yκ°€ 7κ³Ό 같을 λ•Œ 이 λ‘˜μ΄ μ„œλ‘œ 참인가? y = 4κ°€ λ“€μ–΄κ°€ 있기 λ•Œλ¬Έμ— 거짓
        System.out.println((x == 3) || (y == 4)); // κ²°κ³Ό True (xκ°€ 3κ³Ό κ°™κ³ , yκ°€ 4와 같을 λ•Œ λ‘˜ 쀑 ν•˜λ‚˜λŠ” 참인가?
        
        }
        
}

 


μ£Όλ‹ˆν•˜λž‘μ˜ 이번 ν¬μŠ€νŒ…μ΄ μ–΄λ– μ…¨λ‚˜μš”? ꡬ독, 곡감과 λŒ“κΈ€μ€ μ£Όλ‹ˆν•˜λž‘μ—κ²Œ 맀우 큰 힘이 될 κ²ƒμž…λ‹ˆλ‹€!


728x90
λ°˜μ‘ν˜•