2진수, 8진수 16진수
| 10진수 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 2진수 | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 |
| 8진수 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 |
| 16진수 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 10진수 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 2진수 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 | 10000 |
| 8진수 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 20 |
| 16진수 | 9 | A | B | C | D | E | F | 10 |
프로그램에서 2진수를 사용할 때는 0B, 8진수를 사용 할 때는 0, 16진수를 사용할 때는 0X를 붙인다.
ex) 10의 경우
2진수 0B1010
8진수 012
16진수 0XA
부호 있는 수를 표현하는 방법
컴퓨터에서 양수와 음수는 부호비트(Most significant Bit; MSB)로 표현하며 0이면 양수, 1이면 음수이다.
8비트로 숫자 5를 표현하면 0000101이 되는데 맨 앞이 부호 비트 인 것이다.
허나 맨 앞 비트만 1로 바꾼다고 음수가 된다 생각하여 바꾸게 되면
1000101이 되는데 이 수를 00000101과 더했을 때 0이 되는 것이 아닌 1001010이 된다.
그럼 -5를 표현하려면 단순히 부호비트를 1로 바꾸는 것이 아닌 5와 더했을 때 0이 되는 값이어야 한다.
프로그래밍에서는 이를 2의 보수라 한다.
2의 보수
보수는 '보충해 주는 수'라는 의미이다.
어떤 특정한 10진수 N이 있을 때 3의 대한 N의 보수는 3과 어떤 수를 합하여 N이 되는 수이다.
즉 N-3이다. N이 10 이라면 '3에 대한 10의 보수는 7이다' 라는 의미.
그렇다면 2진수에서 2의 보수는 음수를 나타낸다.
10진수에서 10의 보수는 더해서 10이 되는 수라고 했으니
2진수에서 2의 보수는 더해서 2, 즉 0010이 되는 수이다.
맨 왼쪽 한 비트가 1로 증가하고 나머지는 0이 되야한다.
ex)
4비트 컴퓨터라고 할때
0011
+ 1101
----------
10000
( 2진수의 덧셈은 0과 1로만 이루어져 더한 결과 값이 2가 되면 다음 자리수로 하나 올라감.)
0011에 대한 2의 보수는 이 수와 더해서 맨 왼쪽 한 비트가 1이 되고 나머지는 0인 10000이 되어야 한다.
0011과 더해 10000가 되는 2의 보수는 1101이다.
그러나 4비트 컴퓨터 이므로 맨 앞의 1비트는 없어지며 0000, 즉 0이 된다.
0011에 대한 2의 보수를 구해서 두 값을 더 했더니 0이 되는 것이다.
그래서 2진수에서 2의 보수를 음수라 한다.
변수
프로그래밍할 때 처음에 사용한 값과 다르게 변하는 값이 있는데 이를 변수라 한다.
ex)게임 케릭터의 레벨, 사람의 나이, 학년 등등
- 자료형
변수를 사용하려 어떤 형태의 자료를 저장할 것인지 정해야 한다.
나이를 저장하려하면 정수 형태를 써야하고, 이름을 저장하려하면 문자 형태를 써야 한다.
이런 형태를 변수의 자료형이라 한다.
- 변수 선언
변수의 자료형을 선택 했다면 변수의 이름 또한 정해주어야 하는데 이렇게 변수의 자료형을 선택하고
이름을 정하는 것을 '변수를 선언한다' 라고 한다.
- 예시
int level; // 정수형 변수 level을 선언.여기서 int가 자료형이고 level이 변수 이름이다.
level = 10; //값 10을 level 변수에 대입
level이라는 이름의 변수를 정수 자료형으로 선언한다.
선언한 level 변수에 값 10을 넣는다. 라는 의미
public class Variable1 {
public static void main(String[] args){
int level; //정수형 변수 level을 선언
level = 10; //level 변수에 값 10을 대입
System.out.println(level); //level의 값 출력
}
}
- 변수 초기화
변수에 처음 값을 대입 하는 것을 초기화 라고 한다.
변수를 초기화 하는 경우는 언제 인지는 항상 다르다.
선언과 동시에 초기화도 가능하며 선언한 이후 대입할 값이 정해지는 시점에 초기화를 할 수도 있다.
- 변수 이름 정하기
자바 기준
| 제약 사항 | 예시 |
| 변수 이름은 영문자(대문자, 소문자)나 숫자를 사용할 수 있고, 특수 문자 중에는 $ , _ 만 사용할 수 있다. |
g_level(O), count100(O), _master(O), $won(O), !jjang(X) |
| 변수 이름은 숫자로 시작할 수 없다. | 27days(X), 1abc(X) |
| 자바에서 이미 사용 중인 예약어는 사용할 수 없다. | while, int, break 등등 |
카멜 표기법(camel notation)
소문자로 시작하며 여러 단어로 변수 이름을 만들 경우 중간에 다른 뜻의 단어가 등장할 때 첫 글자를 대문자로 사용한다.
ex)
numberOfPeople
blogGuichaneum
'JAVA' 카테고리의 다른 글
| 형 변환 (1) | 2024.12.06 |
|---|---|
| 상수와 리터럴 (0) | 2024.12.03 |
| 실수 자료형, 논리 자료형 (0) | 2024.12.02 |
| 문자 자료형 연습 / 'A'와 "A"는 다르다. (2) | 2024.12.02 |
| 3일차 자료형 (2) | 2024.11.21 |