개발/Java

(Do it 자바) 2 - 변수와 자료형 (1)

개발하는 인사담당자 2023. 5. 31. 23:04

■ 컴퓨터에서 수 표현 방법 

 

컴퓨터는 0과 1로 데이터 저장 (on/off)

이런 0과 1로 자료를 표현한 것이 2진수라 한다. 

 

1byte = 8bit

 

* 2진수

0000 0001 0010 0011 0100

   0       1       2       3       4 

 

* 8진수

0 1 2 3 4 5 6 7 10

                         8 

1 1 1 = 7

 

* 10진수

1 2 3 4 5 6 7 8 9 10

 

* 16진수

9    A    B    C    D    E    F    10

9   10  11   12  13   14   15   16

 

16진수를 사용하는 이유는 다음과 같다.

 

8bit로 10을 표현한다면 

10 = 8 + 2 (2에 엔승으로 표현되는 것으로 더하기)

10 = 2³ + 2¹ 인데

 

2진수로 10을 나타내면 아래와 같다.

0 0 0 0 1 0 1 0

            2³2²2¹2

            

16진수는 0~15까지 표현하려면

1 1 1 1 총 4bit 필요

2³2²2¹2

8+4+2+1

= 15 이다.

 

 0~15까지 표현하려면 총 4bit가 필요한데,

이 4bit를 한꺼번에 모아서 표현할 수 있는게 

16진수의 F 이다. 

 

주소값 나타낼 때 주로 16진수로 많이 표현한다.

 

만약 64bit 다 하면 

64/4= 16개면 표현 가능

 

32/4= 8개면 표현 가능 

하기 때문에 편리성으로 쓴다.

 

■ 프로그래밍으로 나타내보기 (2진수, 8진수, 16진수)

 

2진수 8진수 16진수

 

int(인티져) : 정수를 나타내는 자료형

num = (사진에서) 변수로 정해짐

프로그래밍에서 "=" 는 대입의 의미이고, 같다는 의미와 다르다

※ 같다는 "=="로 표현

 

숫자 앞 0B = 2진수를 의미

EX) 0B1010 = 10

숫자 앞 0 = 8진수를 의미

EX) 012 = 10

숫자 앞 0X = 16진수를 의미

EX) 0XA = 10

 

"//" 는 주석으로 컴파일 시 오류를 일으키지 않는다.

 

■ 단축키 참고

 

클래스 생성 Ctrl + N

컴파일 Ctrl + S

실행 Ctrl + F11

 

■ 음의 정수 표현하기

 

가장 많이 쓰는 정수의 bit 는 int로 32bit = 4byte 

맨 앞을 MSB라고 하며 부호 비트를 나타낸다.

 

앞이 0이면 양수를 의미, 1이면 음수를 의미한다.

 

5를 이진수로 표현하면 아래와 같다

 

0  0  0  0  0  1  0  1 = 5

 

그렇다면 아래의 숫자가 -5라 생각할 수 있는데 아니다.

 

1  0  0  0  0  0  1  0  1 = -5(?)

 

왜냐면 5와 -5의 합은 0이 나와야 하는데 해당 숫자를 더하면

 

 0  0  0  0  0  1  0  1 

1  0  0  0  0  0  1  0  1 

-----------------------------

1  0  0  0  0  1  0  1  0 -> 모든 숫자가 0이 아니므로 -5라 할 수 없다. 

 

즉 프로그래밍에서 -5와 5를 더했을 때 0이 되는 값을 찾아야 하는데

이를 "2의 보수" 라 한다. 

 

보수란 보충되는 수라 불리며 예를 들면

 

10에 대한 4의 보수는 6이다.

4 + 6 = 10

10에 대한 5의 보수는 5이다.

5 + 5 = 10

 

즉 2진수에서 2의 보수는 더해서 2, 즉 10이 되는 수이다. 

따라서 합해서 0이 되고 bit가 넘어가서 트렁케이트 즉 비트가 짤리는 현상 발생하도록 해야한다.

 

4비트라는 가정하에 아래를 더하면 

 

   0  0  1  1

   1  1  0  1 (2의 보수)

  --------------

1  0  0 0  0  (1이 짤려서 트렁케이트)

 

2의 보수를 더해 0000이 되었고, 즉 0이 되었다.

 

0011에 대한 2의 보수를 구해 더했더니 0이 되었으므로

2진수에서 2의 보수를 음수라고 한다.

 

2의 보수를 구하기 위해서는 1. 우선 1의 보수를 만들어야 한다.

 

1의 보수를 구하는 방법은 다 더해서 1이 나오도록 만들어야 한다.

즉 0이면 1, 1이면 0을 넣어준다.

 

앞서 실습했던 5를 예시로 보자면,

 

 0  0  0  0  0  1  0  1 

1  1  1  1  1  1  0  1  0  (1의 보수)

-----------------------------

1 1  1  1  1  1  1  1  1

 

여기서 2. 맨 마지막 자리수에 1을 더하면 

 

   1 1  1  1  1  1  1  1  1

   0  0  0  0  0  0  0  0  1 

   -----------------------------

0  0  0  0  0  0  0  0  0 (1 트렁케이트)

 

따라서 2의 보수(음수)를 구하는 방법은 1의 보수를 구해서 더한 후

그 값에 1을 더하면 된다.

 

즉 5에 대한 2의 보수는 1  1  1  1  1  1  0  1  0 의 제일 낮은 자리에 1을 더한

1  1  1  1  1  1  0  1  1 이며 이 2진수의 값이 바로 10진수 -5이다. 

 

    0  0  0  0  0  1  0  1 = 5

   1  1  1  1  1  1  0  1  1 = 5에 대한 2의 보수 = -5

   -----------------------------

0  0  0  0  0  0  0  0  0

 

☞ 결론

 

음수를 만드는 방법은 2의 보수를 취해야 하며,

2의 보수를 취하기 위해서는 1의 보수를 취하고,

제일 낮은 자리에 1을 더하는 것이다.

 

-5가 맞는지를 확인하는 방법은 다시 거꾸로 돌아가면 된다.

2의 보수로 돌아가서 해당 숫자가 5인지 확인하면 된다.

 

■ 양수와 음수 더하기 실습

 

양수와 음수 더하기 실습