대충 알고 넘어갔던 기본 개념 정리
1. 이진수로 음수 표현
- 음수는 2의 보수로 표현하고 둘을 더하면 0이 된다.
- 보수의 사전적 의미를 구글링 해보면 다음과 같다. 두 수의 합이 진법의 밑수(N)가 되게 하는 수. 예를 들어 10진수 4의 10의 보수는 6이고, 10진수 2의 10의 보수는 8이다. 보수는 컴퓨터에서 음의 정수를 표현하기 위해 고안된 것으로 컴퓨터 내부에서 사칙연산을 할 때 덧셈을 담당하는 가산기만 이용하기 때문에 뺄셈은 덧셈으로 형식을 변환하여 계산해야 한다. 즉 컴퓨터 내부에서는 A -B를 계산할 때 B의 보수(-B)를 구한 다음 A + (-B)로 계산한다.
- 이진수의 경우 맨 앞의 비트를 MSB(most significant bit, 최상위비트)라고 하며 0일 경우 양수, 1일 경우 음수이다.
- 이진수에서 1의 보수 : 더 하면 1이 되는 수. 즉 비트를 바꿔주면 된다. 예) 00001010 의 1의 보수는 11110101
- 이진수에서 2의 보수 : 1의 보수에 1을 더한 값
- 00001010의 1의보수 11110101에 1을 더하면 11110110이 되고 00001010에 2의 보수인 11110110을 더하면 100000000이 되고 맨 앞의 1은 표현 범위를 넘어서 truncate되고 0이 되게 된다.
2. 자바에서 각 자료형의 표현 범위
- 내가 봤던 기본서들은 표현 범위를 10진수로 풀어놔서 이걸 어떻게 외우나 했는데 오늘 인강 듣다가 생각나서 정리해본다~
- 자바에서 int형을 예로 들면 4바이트(32bit)를 사용하는데 그렇다면 표현 범위는? 맨 앞의 비트는 MSB이므로 사용하지 않고 31개의 bit를 사용하는데 -2의 31승부터 2의 31승까지 빼기 -1이(모든 비트가 0인 경우) 표현범위이다.
- 자바 내부에서 숫자나 문자를 기본적으로 4바이트로 계산하는데 long 타입의 자료형에 4바이트 이하의 값을 할당할 때는 숫자에’L’을 안써줘도 오류가 발생하지 않는다. 기본적으로 4바이트로 형변환하여 계산하기 때문에… 하지만 4바이트를 넘어가는 값을 할당할 때는 ‘L’을 써줘야 long타입이라고 계산한다. 즉 그냥 long 타입의 자료형 쓸땐 ‘L’을 쓰도록 하자! 대소문자 아무꺼나 써도 되지만 헷갈리니까 대문자로 사용하자.
3. 상수와 리터럴
- 리터럴(literal) : 프로그램에서 사용하는 모든 숫자, 값, 논리 값 예)10, 3.14, ‘A’ true
- 모든 리터럴은 상수 풀(constant pool)에 저장되어 있음
- 상수 풀에 저장될 때 정수는 int, 실수는 double로 저장 됨
- 실수가 정수로 형변환 될 때에는 소수점 이하 부분은 truncate 된다.
5. 비트 연산
- << 연산은 곱하기 연산 >> 연산은 나누기 연산. 해당 숫자만큼 2의 n승한 값을 곱하기/나누기 한다.
6. switch문
-
같은 로직을 수행하는 case는 한번에 사용 할 수 있다.
switch(value) { case 1: case 2: case 3: 수행로직 break; }