열심히 끝까지
5강 연산자2 본문
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 |