열심히 끝까지

5강 연산자2 본문

멘토씨리즈 JAVA

5강 연산자2

노유림 2022. 4. 21. 15:42

5-1) 논리 연산자
       1) 논리 연산자?
                여러가지 조건을 동시에 검사시 사용하는 연산자
                두 항의 값이 boolean 값일 때 연산 가능!

       2) 논리 연산자의 종류

종류 연산자 사용 예 설명
AND && a && b a가 참이고 b가 참이면 결과 참
OR || a || b a가 참이거나 b가 참이면 결과 참
NOT ! !a a가 참이면 거짓, 거짓이면 참

 

논리 연산자 예시

5-2) 비트 연산자
       1) 비트 연산자?
                비트 단위를 연산을 하는 연산자
       * 비트?(bit)
                : 데이터의 최소단위(0과 1 각각의 단위가 비트)
                : 0101 0100 1111 0000 1010
       * 1byte = 8bit
                : 비트에는 0 혹은 1이 올 수 있음
                : 1 : true, 0 : false

       2) 비트 연산자의 종류
                - 비트 논리 연산자
                - 비트 쉬프트 연산자

                (1) 비트 논리 연산자?
                        : 비트 단위로 논리 연산을 하는 연산자

                 - 비트 논리 연산자의 종류

종류 연산자 사용 예 설명
비트AND & a & b a가 1이고 b가 1이면 결과 1
비트OR | a | b a가 1이거나 b가 1이면 결과 1
비트XOR ^ a ^ b a와 b가 서로 다르면 1, 같으면 0
비트NOT ~ ~a a가 1이면 0, 0이면 1

 

                * 10진수의 2진수 변환
                         : 몫이 1이 될 때까지 나눈 후 거꾸로 올라오기

                * 2진수의 10진수 변환
                         : 각 자리의 값이 1인 수를 2의 승으로 계산한 합

 

                * 2진수의 덧셈연산
                         : 0101(2) + 0010(2) = 0111(2)
                         : 0111(2) -> 4+2+1=7
                         : 1101(2) + 0011(2) = 0001 0000(2)

비트 논리 연산자 + 쉬프트 연산자 예시


                * 15&5?
                         : 15 - 1111(2), 5 - 0101(2)
                         : 0101(2) - 5

                 * 15|5?
                         : 1111(2) - 15

                 * 15^5?
                         : 1010(2) - 10

                 * ~5?
                         : 5 - 0101(2)
                                -> 편의상 5를 4bit로 표현한 것
                                window + E
                                => 0000 0000 0000 .... 0000 0101
                                NOT 연산 시
                                => 1111 1111 1111 .... 1111 1010

                          (1) 부호가 왜 바뀌는가?
                                 컴퓨터는 음수를 저장할 수 없음
                                 음수는 부호를 표현할 수 있는 비트
                                 부호를 표현하는 비트 : 부호비트 == 최상위 비트
                                 부호비트 : 0 -> 양수
                                 부호비트 : 1 -> 음수

                          (2) ~5 = -6?
                                 0000 0000 .... 0101
                                 1111 1111 .... 1010
            
                                 5의 4bit 표현으로 계산했듯
                                 -6의 4bit를 구할 예정
                                 ~5 = -6
                                 -6 = 5

                                 6+(-6) = 0
                                 0110(2) + 1010(2) = 0000(2)
                                 
                                 ~(1010(2)) = (0101(2)) = 5

                 * NOT 연산 공식?
                         : ~a = -a -1

                (2) 비트 쉬프트 연산자?
                         : 쉬프트 연산 = 비트 이동 연산

                - 비트 쉬프트 연산자의 종류

종류 연산자 사용 예 설명
왼쪽 쉬프트 << a << n a의 비트를 왼쪽으로 n만큼 이동
오른쪽 쉬프트 >> a >> n a의 비트를 오른쪽으로 n만큼 이동

                * 15 >> 2
                          : 1111(2) -> 0111(2) -> 0011(2) = 3
                          : 오른쪽 쉬프트 연산자
                          : 오른쪽 1칸씩 이동할 때마다 /2
                          : 15/2 = 7
                          : 7/2 = 3

                * 5 << 4
                          : 0101(2) -> 0 1010(2) -> 01 0100(2) -> 010 1000(2) -> 0101 0000(2) = 80
                          : 왼쪽 쉬프트 연산자
                          : 왼쪽 1칸씩 이동할 때마다 *2
                          : 5*2 = 10
                          : 10*2 = 20
                          : 20*2 = 40
                          : 40*2 = 80

 

'멘토씨리즈 JAVA' 카테고리의 다른 글

7강 제어문 - 조건문 if  (0) 2022.04.22
6강 연산자3  (0) 2022.04.21
4강 연산자1  (0) 2022.04.20
3강 변수와 상수  (0) 2022.04.20
2강 출력 메서드와 입력 메서드  (0) 2022.04.20