본문 바로가기

코딩 국비 학원/Do it! 자바 프로그래밍 입문

[Do it! 자바 프로그래밍 입문] 진수, 변수

22.11.29 배운 내용 정리
(2, 8, 10, 16진수, 변수)

 

우리가 사용하는 모든 데이터는 컴퓨터 내부에서 0과 1로 이루어져 있음

이렇게 0 또는 1로 표현할 수 있는 최소 단위를 비트(bit)라고 하며, 8비트가 모이면 1바이트(byte)가 됨

→ 8비트(bit) = 1바이트(byte)


10진수, 2진수

10진수 = 우리가 일상 생활에서 사용하는 숫자

2진수 = 0과 1로만 표현되는 수

 

10진수 0 1 2 3 4 5 6 7 8 9 10
2진수 0 1 10 11 100 101 110 111 1000 1001 1010

 

문자도 숫자로 표현하도록 약속되어있음

(대문자)A = 65 ~ Z = 90

(소문자)a = 97  ~ z = 122

 

컴퓨터 내부에서는 문자도 2진수로 표현함

ex. A(65) = 1000001(2진수)

이 값을 A 문자의 *아스키(ASCII) 값이라고 함

 

*아스키(ASCII)

 - American Standard Code for information Interchange의 약어

 - 미국 표준 협회(ANSI)가 제정한 규칙

 - 영문자, 숫자, 특수 문자를 8비트 값의 수로 미리 정의해 놓았음

 

※ 비트로 표현 할 수 있는 수의 범위

컴퓨터는 2진수로 수를 표현하기 때문에

비트 수가 n개일 때 2진수로 나타낼 수 있는 숫자의 개수는 2ⁿ개이다.

ex. 비트가 한 개라면 2개(2¹개)의 수를 표현할 수 있으므로 범위는 0~1이다.

      비트가 두 개라면 4개(2²개)의 수를 표현할 수 있으므로 범위는 0~3이다.

      비트가 세 개라면 8개(2³개)의 수를 표현할 수 있으므로 범위는 0~7이다.

 

한 개의 비트로 나타낼 수 있는 수의 범위 → 0, 1 (0~1)
두 개의 비트로 나타낼 수 있는 수의 범위 → 00, 01, 10, 11 (0~3)
세 개의 비트로 나타낼 수 있는 수의 범위 → 000, 001, 010, 011, 100, 101, 110, 111 (0~7)

2진수, 8진수, 16진수

자바 프로그램에서는 2진수, 8진수, 16진수를 사용할 수 있음

2진수 = 너무 길어서 불편함 → 8진수, 16진수로 바꿔서 사용하면 간단하게 표현 가능

8진수를 2진수로 표현하기 위해 3개의 비트 필요, 16진수는 4개의 비트필요

 

※ 0부터 16까지 수를 10진수, 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

부호 있는 수를 표현하는 방법

컴퓨터는 숫자를 0과 1로만 표현할 수 있기 때문에 부호 또한 0과 1로 표현함

부호를 나타내는 비트는 맨앞에 붙이며 부호 비트(MSB : Most Significant Bit)라고 부름

부호 비트가 0이면 양수, 1이면 음수

그렇다고 맨 앞 비트(부호 비트)만 1로 바꾼다고 음수가 되는 것이 아님

ex. 컴퓨터에서 표현할 -5는 5와 더했을 때 0이 되는 값이어야 함 → 이 값을 '2의 보수'라고 함

 

보수 = 보충해주는 수

10진수에서 10의 보수는 더해서 10(십)이 되는 수

ex. N=10일 경우, 3에 대한 10의 보수 = 7

 

2진수에서 2의 보수는 더해서 2, 즉 10(일영)이 되는 수임.(맨 왼쪽 한 비트가 1로 증가하고 나머지는 0이됨)

ex. 4비트만 사용하는 컴퓨터에서 0011에 대한 2의 보수 = 10000이 되어야함(맨 왼쪽 한 비트가 1이 되고 나머지는 0)

0011과 더해 10000이 되는 2의 보수 = 1101 but, 이 컴퓨터는 4비트만 사용한다고 했으므로 *맨 앞의 1비트는 없어짐

→ 맨 앞의 1이 없어져 0000, 즉 0이 됨

※ 0011에 대한 2의 보수를 구해서 두 값을 더했더니 0이 됨 그래서 2진수에서 2의 보수를 음수라고 함.

 

*맨 앞의 1비트가 없어지는 것 = '트렁케이트(truncate)된다'라고 함

 

ex. -5를 만드는 방법(10진수 5를 2진수 8비트로 나타내면 00000101임)

00000101에 대한 2의 보수 = 1의 보수로 변환후(11111010)에 제일 낮은 자리에 1을 더한 11111011


※ 프로그램 만드는 순서

① 프로젝트 생성

File → New → Java Project (프로젝트 이름 작성, 모듈 파일 생성X)

 

② 패키지 생성

앞에서 만든 프로젝트 우클릭 → New → Package (패키지 이름 작성, 항상 소문자로 써야함)

 

③ 클래스 생성

앞에서 만든 패키지 우클릭 → New → Class (클래스 이름 작성, main() 함수 추가 ※ public static ~ 체크표시하기)

 

④ 코드작성 완료 후 저장(Ctrl+S) 후 실행(Ctrl+F11)

 

변수

변수 = 변하는 수

어떤 값을 저장하려면 우선 저장할 공간이 필요함 = 이 공간의 이름이 바로 변수

변수를 사용하려면 우선 어떤 형태의 자료를 저장할 것인지 정해야함

ex. 사람의 나이 저장 = 정수 형태 사용, 사람의 이름 저장 = 문자 형태 사용

변수의 자료형 선택 후에 변수의 이름을 정해줘야함 = 이것을 '변수를 선언한다'라고 함

 

변수 선언

 

변수를 선언할 때 변수 값을 바로 대입할 수도 있음

변수에 처음 값을 대입하는 것을 '초기화'라고 함

반드시 변수 선언과 동시에 초기화를 해야 하는 것은 아님

변수 초기화

 

변수 이름

변수 이름은 사용 목적에 맞게 의미 부여해서 만드는 것이 베스트

변수 길이 제한 X → 줄임말보단 의미를 풀어서 쓰는 것이 좋음

변수 이름은 대부분 소문자로 시작하며 여러 단어로 변수 이름을 만들 경우

중간에 다른 뜻의 단어가 등장할 때 첫 글자를 대문자로 사용함으로써 변수를 알아보기 쉽게 할 수 있음

ex. numberOfStudent = 카멜 표기법(Camel Notation)이라고도 함

 

※ 변수 이름 제약 사항

제약 사항 예시
변수 이름은 영문자(대문자, 소문자)나 숫자 사용 가능
특수 문자 중에는 only $, _만 사용 가능
g_77level(O), $Max_Count(O), _Master(O)
변수 이름은 숫자로 시작할 수 없음 29day(X), 1vov(X)
자바에서 이미 사용 중인 *예약어는 사용할 수 없음 while, int, break 등의 예약어(X)

*예약어 : 프로그래밍 언어에서 특별한 의미로 미리 약속되어 있는 단어