JAVA

2진수(부호비트, 2의 보수), 변수(선언, 초기화)

seungmin576 2024. 11. 19. 16:29

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