ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (Do it 자바) 2 - 변수와 자료형 (1)
    개발/Java 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인지 확인하면 된다.

     

    ■ 양수와 음수 더하기 실습

     

    양수와 음수 더하기 실습

Designed by Tistory.