ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 정수의 표현과 2의 보수
    프로그래밍 언어/C 2016. 10. 22. 16:19
    728x90
    반응형

    정수의 표현을 알아보자

    정수의 표현을 알기위해선 2진수를 알아야 한다.

    2진수는 0과 1로 이루어진 숫자이다.

    2진수는 컴퓨터를 배우기위해 필요한 숫자이다. 알아두어야한당~!


    2진수의 음수

    2진수의 음수를 알기전에 먼저 2진수를 알아보자.

    6의 이진수는 00000110 이다.

    그럼 음수는 어떻게 표현할까...

    음수의 표현은 2진수의 맨 왼쪽(Most Significant Bit)비트를 MSB라고 부른다.

    이 MSB는 부호를 표시한다.


    00000110 여기서 보면 맨 왼쪽의 비트가 0을 가리키기때문에 +로 인식한다.

    그래서 이 2진수는 +6을 가리킨다.


    10000110 여기서 보면 맨 왼쪽의 비트가 1을 가리키기때문에 -로 인식한다.

    그래서 이 2진수는 -6을 가리킨다.


    하지만 MSB가 1이 붙어있다고 무조건 다 음수가 아니라는것이다.

    위의 -6도 틀리다는뜻이다.


    저 둘이 맞는지 확인하기위해선 두숫자를 더해보면 알 수 있다.

    6 + (-6) = 0 이 나와야 하므로 저 2진수를 더하면 00000000이 나와야하는데,


       10000110

    + 00000110

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

       10000110


    이렇게 나와버려서 이 수는 음수가 아니라는것이다.

    그럼 어떻게 음수를 구할 수 있을까??

    일단 음수를 구하기위해선 1의 보수와 2의보수를 알아야 한다.



    1의 보수

    1의 보수란..

    비트의 각 자리에서 1을 빼낸것이다.

    이렇게 정석대로 이해를 해야하지만 조금 힘든사람들은

    0을1로 1을 0으로 숫자를 뒤집는다 라고 생각하면된다.

    예를들어 0110 이란 숫자를 1의 보수 취하면 1001이 되버린다.

    이게 1의 보수이다.



    2의 보수

    2의 보수란...

    2의 보수는 1의보수를 취한 숫자를 +1해준 것이다.

    즉 위에서 0110을 1의보수를 취하면 1001이 되고,

    그 수에 +1을 하면 1010이 된다.

    이 2의보수를 취한 값이 결국 음수가 된다는것이다.


    한번에 요약하여 계산하면


    0110    2진수    

    1001    1의보수

    1010    2의보수


    이렇게 나타낼 수 있다.


    즉 그래서 아까 위에서 본 6을 2의보수를 취하면


    00000110    2진수6

    11111001    1의보수

    11111010    2의보수


    이렇게 되버린다.

    6의 음수는 11111010 이 된다.


    이게 맞는지 확인하려면 두 수를 더하면된다.



       10000110

    + 11111010

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

      100000000


    이렇게 되버린다.

    여기서 올림수 1은 버리게 되므로 결국 00000000이 된다.




    vol.7

    728x90
    반응형

    '프로그래밍 언어 > C' 카테고리의 다른 글

    비트 연산자  (0) 2016.12.14
    scanf함수 알아보자  (0) 2016.10.20
    C언어의 연산자  (0) 2016.10.18
    변수와 데이터 타입  (0) 2016.10.18
    printf 함수를 알아보자  (0) 2016.10.17
Designed by Tistory.