본문 바로가기
IT Study/따즈아 Java & Java 기초

따즈아 java 멘토 시리즈 5강 - 연산자2

by hhyyyjun 2022. 12. 26.

논리연산자

여러가지 조건을 동시에 검사 시 사용하는 연산자

두 항과 값이 boolean(참 or 거짓) 값일 때 연산 가능

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

비트연산자

비트 단위로 연산을 하는 연산자

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

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

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

3) 2진수의 덧셈

ex) 0101(2) + 0010(2) = 0111(2)

4) 10진수 연산 예시

5) 그렇다면 NOT 연산일 때?

-6이 나오게 된다.

먼저 5는 2진수로 표현하면 0101(2) 인데 이것은 편의상 5를 4bit로 표현한 것이다.

컴퓨터는 32비트, 64비트 운영 체제에 따라 명령어를 처리하기 때문에 실제로는

>> 0000 0000 0000 .... ..... 0000 0101 이 된다.

NOT 연산일 때 1111 1111 1111 .... .... 1111 1010 >> 4비트로는 마지막 1010 부분만 보고 10으로 계산하게 된다.

먼저

1. 부호가 바뀌는 이유?

컴퓨터는 음수를 저장할 수 없다. >> 음수는 부호를 표현하는 비트

부호를 표현하는 비트 = 부호비트 = 최상위비트

부호비트 : 0 >> 양수

부호비트 : 1 >> 음수

2. ~5일 때 -6 ?

0000 0000 .... .... 0101

NOT >> 1111 1111 .... .... 1010 일 때 직접 계산하기 어렵다.

따라서 5의 4bit 표현으로 계산한 것처럼 -6의 4비트를 구해본다.

~5의 연산이 -6이라면 반대로 -6의 NOT 연산하면 5가 나오는지 확인한다.

계산방법

6 + (-6) = 0

6 의 2진수 0110(2) 이 0000(2) 이 되는 4비트를 구해주어야 한다.

사진과 같이 0000(2)이 되는 4비트 1010(2)을 구할 수 있다.

마지막으로 1010(2)의 NOT연산을 해봤을 때 10진수 5가 나오는지 확인한다.

>> ~(1010)(2) = 0101(2) = 5(10)

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

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

ex1) a의 비트를 오른쪽으로 2번 이동

오른쪽 쉬프트 연산자

오른쪽으로 1칸씩 이동할 때마다 n/2 >> 나머지 무시

15/2 = 7

7/2 = 3

ex2) a의 비트를 왼쪽으로 4번 이동

왼쪽 쉬프트 연산자

왼쪽으로 1칸씩 이동할 때마다 n*2

5*2 = 10

10*2 =20

20*2 = 40

40*2 = 80

 
 

댓글