논리연산자
여러가지 조건을 동시에 검사 시 사용하는 연산자
두 항과 값이 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


'IT Study > 따즈아 Java & Java 기초' 카테고리의 다른 글
따즈아 java 멘토 시리즈 7강 - 제어문_조건문If (0) | 2022.12.26 |
---|---|
따즈아 java 멘토 시리즈 6강 - 연산자3 (0) | 2022.12.26 |
따즈아 Java 멘토 시리즈 4강 - 연산자1 (0) | 2022.12.26 |
따즈아 Java 멘토 시리즈 3강 - 변수와 상수 (0) | 2022.12.26 |
따즈아 Java 멘토 시리즈 2강 - 출력 메서드와 입력 메서드 (0) | 2022.12.25 |
댓글