1. 2진법
컴퓨터에서 0과 1을 사용하여 데이터를 표현하는 방법 중 하나
비트, bit → 컴퓨터가 값을 저장할 수 있는 최소 단위, 한자리의 2진수
바이트, byte → 1비트 8개를 묶은 단위로 데이터의 기본 단위로 사용됨
+) 워드, word → CPU가 한 번에 처리할 수 있는 데이터의 크기
(CPU의 성능에 따라 크기가 정해짐) Ex.32비트 CPU는 32비트를 1워드로 가짐
2. 2진법, 8진법, 16진법
2진법은 두 개의 기호만을 사용하므로 값을 표현할 때 자리수가 길어지는 단점을 가짐
따라서, 이를 보완하기 위해 8진법과 16진법을 사용함
# 2진수를 8진수로 변환하는 방법 : 2진수를 뒤에서부터 3자리씩 끊어서 계산
Ex. 2진수 1010101101 ▶ 1/010/101/101 ▶ 1255
# 2진수를 16진수로 변환하는 방법 : 2진수를 뒤에서부터 4자리씩 끊어서 계산
Ex. 2진수 1010101101 ▶ 10/1010/1101 ▶ 2AD
3. 10진법
10진수는 우리가 흔히 사용하는 것으로 0~9를 이용하여 나타냄
# 10진수를 변환하는 방법
1) 10진수를 2진수로 변환 : 10진수를 2로 반복하여 나누며, 몫이 2보다 작을 때까지만 수행
Ex. 17 ▶ 10001
2) 10진수를 8진수로 변환 : 10진수를 8로 반복하여 나누며, 몫이 8보다 작을 때까지만 수행
Ex. 835 ▶1503
(16진수로 변환하는 과정도 동일하게 하면된다.)
# n진수를 10진수로 변환하는 방법
1) 2진수를 10진수로 변환 : 각 자리의 수에 해당하는 2의 제곱을 곱한 후, 모두 더함
Ex. 2진수 110110 = (1x2^5) + (1x2^4) + (0x2^3) + (1x2^2) + (1x2^1) + (0x2^0)
= 32 + 16 + 0 + 4 + 2 + 0 = 54
2) 8진수를 10진수로 변환 : 각 자리의 수에 해당하는 8의 제곱을 곱한 후, 모두 더함
Ex. 8진수 1615 = (1x8^3) + (6x8^2) + (1x8^1) + (5x8^0)
= 512 + 384 + 8 + 5 = 909
(16진수로 변환하는 과정도 동일하게 하면된다.)
4. 2의 보수법
n의 보수 : 더했을 때 n이 되는 수
2의 보수 : 두 2진수를 더했을 때 0이 되는 수→ 10진수로 2는 2진수로 10이 된다. 2진수 10은 자리올림이 발생하고 0이 되는 수이다. 따라서, 2의 보수 관계에서 두 2진수를 더하면 자리올림이 발생하고 0이 되는 관계를 말한다.
2의 보수법이란?
2의 보수 관계에 있는 두개의 2진수로 절댓값이 같고 부호가 다른 두개의 10진수를 표현하는 것!!
2진수 0101 = 10진수 5
2진수 1011 = 10진수 -5
-------------------------------
0101 + 1011 = 10000 (이때, 크기는 4비트로 유지되므로 맨앞 1은 버려짐)
5 + (-5) = 0
# 음수의 2진 표현을 구하는 방법
첫번째, 10진 음수의 절댓값을 2진수로 변환한다.
Ex. -6의 절댓값은 6이며 이를 2진수로 변환하면 0110이 된다.
두번째, 변환된 2진수의 1의 보수를 구한다.
(1의 보수는 더해서 1이 되는 수이므로 1을 0으로 0은 1로 바꾸면 된다.)
Ex. 0110의 1의 보수는 1001이다.
세번째. 앞선 과정에서 구한 1의 보수에 1을 더한다.
Ex. 1001 + 1 = 1010
결론 : 위 예시에서 -6의 2진 표현은 1010이 된다!
실제로 1010(10진수 -6)과 0110(10진수 6)을 더해보면 (1)0000이 되는 것을 알 수 있다.
'▶ JAVA > 개념정리' 카테고리의 다른 글
[Java] 6. 조건문 (0) | 2022.02.02 |
---|---|
[Java] 5. 연산자(2) (0) | 2022.01.28 |
[Java] 4. 연산자(1) (0) | 2022.01.27 |
[Java] 3. 오버플로우, 형변환(기본) (0) | 2022.01.26 |
[Java] 1. 변수, variable (1) | 2022.01.21 |