1. 2진법 : 컴퓨터에서 데이터 표현에 사용, 2를 기반으로하는 숫자 체계.
10진수와 2진수 테이블
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
1 | 10 | 11 | 100 | 101 | 110 | 111 | 1000 | 1001 | 1010 |
1의 보수.
답이 양수가 나오는 식에서는 캐리(정해진 비트를 넘어선 비트)가 생겼을대 최하위 비트(젤 우측 비트)에다가 옮겨준다.
답이 음수가 나오는 식에서는 캐리가 발생하지 않으며, 1의보수를 한번 더 취하고 (반전=xor), -를 붙인다.
> 13 - 10 = 3
1101 - 1010 = 0011
1101 + 0101 = 0011
10010 = 0011
0011 = 0011 >> 맨 앞자리는 캐리라고 4비트를 벗어난 숫자. 이것을 최하위 비트에(제일 우측 비트) 옮겨준다.
EX) 10 - 13 = -3
1010 - 1101 = -0011 // 10진수의 숫자들을 2진수로 변경
1010 + 0010 = -0011 // -를 무조건 +로 반전을 통해 (1의 보수를 취한다) 바꿔야함.
1100 = -0011 //
- 0011 = - 0011
2의 보수.
1의 보수 값에 +1을 한다. 1의 보수와는 다르게 캐리값이 나왔을때 캐리값을 버린다.
캐리가 발생하지 않으면 다시 보수를 취한다. 그리고 - 값을 붙인다.
13 - 10 = 3
1101 - 1010 = 0011
1101 + 0101 = 0011 // 음수 - 1010을 1의 보수를 취한 다음(0101) +1을하여 2의 보수를 취해준다.
1101 + 0110 = 0011
10011 = 0011 // 양수에서는 캐리값 1 을 버린다.
10 - 13 = -3
1010 - 1101 = -0011
1010 + 0010 +0001 = -0011
1010 + 0011 = -0011
1101 = -0011 // 캐리가 발생하지 않았으므로 +1하여 2의 보수를 취하고 -를 붙인다.
2. 비트 연산자 : 비트 단위로 연산, 기본 연산자와 비트 연산자 비교.
[기본 연산사]
5 && 3
5 || 3
[비트 연산자]
0101 & 0011
0101 | 0011
3. 비트 논리 연산자
A. AND 연산자 (&) : 두 개의 비트 값이 모두 1인 경우에만 결과 1.
ex)
bit1 bit2 result
0 0 0
0 1 0
1 0 0
1 1 1
ex) 5&3 > 1
bit1 bit2 bit3 bit4
5 0 1 0 1
3 0 0 1 1
result 0 0 0 1
B. OR 연산자 (|) : 두 개의 비트 값 중 하나라도 1이면 결과 1
ex)
bit1 bit2 result
0 0 0
0 1 1
1 0 1
1 1 1
ex) 5|3 > 7
bit1 bit2 bit3 bit4
5 0 1 0 1
3 0 0 1 1
result 0 1 1 1
C. XOR 연산자(^) : 두 개의 비트 값이 같으면 0, 다르면 1
ex)
bit1 bit2 result
0 0 0
0 1 1
1 0 1
1 1 0
ex) 5^3 > 6
bit1 bit2 bit3 bit4
5 0 1 0 1
3 0 0 1 1
result 0 1 1 0
D. 반전 연산자(~) : 비트 값이 0이면 1로, 1이면 0으로 반전]
ex)
bit 1 Result
0 1
1 0
ex) ~5 -> -6
bit1 bit2 bit3 bit4
5 0 1 0 1
result 1 0 1 0
>> 1 0 1 0 일때 2의 보수를 취해주면
0 1 0 1 + 0 0 0 1 = 0 1 1 0 후 - 붙이면. -6
E. 비트 이동 연산자 ( <<, >>, >>> )
**중요 : <<, >> 의 경우 이동하고 비워진 bit1 자리에는 이동 전 기존 bit1 숫자 따라오지만
>>> 에는 비워진 bit1 자리에는 0으로 채워짐.
E-1 : << 연산자 : 비트를 왼쪽으로 이동. // N<<M 의 경우 결과값 = 2N됨. // 이동 후 bit1 자리는 기존의 bit 숫자 내려옴.
ex) int numA = 3;
result = numA << 1;
3<<1 : 6
bit1 bit2 bit3 bit4
3 0 0 1 1
result 0 1 1 0 = 6
E-2 : >> 연산자 : 비트를 오른쪽으로 이동. // N << M의 경우 결과값 = N/2 됨. // 이동 후 bit1 자리는 기존의 bit 숫자옴.
ex) int numA = 3;
result = numA >> 1;
3>>1 : 1
bit1 bit2 bit3 bit4
3 0 0 1 1
result 0 0 0 1 = 1
E-3 : >>> 연산자 : 비트를 오른쪽으로 이동 (이동 후 bit1 자리는 부호비트 상관없이 0으로 채움)
'Zero Base 백엔드 스쿨 6기' 카테고리의 다른 글
ZB BE 6th - 자바 공부 #4. 다차원 배열 (0) | 2022.10.06 |
---|---|
ZB BE 6th - 자바 공부 #3. 조건문 (0) | 2022.10.05 |
ZB BE 6th - Java 공부 #2-1 연산자 (0) | 2022.10.05 |
ZB BE 6th - Java 공부 #1 변수와 자료형 (0) | 2022.10.04 |
백엔드 공부 시작 by 10/1/22 (0) | 2022.10.01 |