ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2진법 계산
    추가 지식 2022. 5. 16. 00:18

    보수 : 두 수의 합이 진법의 밑수가 되게 만드는 수, 예를 들어서 10진수 4의 10의 보수는 6이 됩니다. (보수의 등장은 덧셈밖에 못하는 컴퓨터에서 뺄셈 계산을 위해서 등장한 개념입니다.)

    1의 보수: 각 자릿수의 값이 모두 1인 수에서 주어진 2진수를 빼면 1의 보수를 얻을 수 있습니다.
    예) 2진수 1010의 1의 보수는 1111에서 1010을 뺀 값인 0101 입니다.

    2의 보수 : 1의 보수에 1을 더한 값을 말합니다.
    예) 2진수 1010의 1의 보수는 1111에서 1010을 뺀 값인 0101에 1을 더한 값인 0110 입니다.

     

    둘중 1의 보수를 많이 사용하는데, 다른 N진법에서도 N-1진법을 많이 사용한다고 합니다.

    이유는 R의 보수를 구하기 위해선 N-R(보수를 구하고 싶은 값)을 하게 되는데 2진수로 예를 들면
    101의 2의 보수를 구하려면 1000 - 0101을 해야 하고, 1의 보수를 구하려면 2의 보수에서 1을 빼야합니다.
    빼는 수 1을 중간식으로 이동 시키고 계산식으로 표현을 하면 
    (1000 - 001) - 101이 되고 앞의 2항을 계산하면 111 - 101 = 010이 됩니다.
    이진수 101의 1의 보수값은 0과 1을 반전시킨 010으로 2의 보수값보다 더 직관적이며 간편하게 구할 수 있기 때문에 더 많이 사용되는게 아닌가 생각이 됩니다.

     

    1의 보수 뺄셈

    1의 보수를 이용한 뺄셈은 빼는 수의 1의 보수를 구한 다음 더합니다. 덧셈한 결과가 최상위 비트에서 자리올림이 생겼다면 최하위 비트에 1을 더하고, 자리올림이 생기지 않았다면 연산 결과에 대해 1의 보수를 구한 후 부호를 붙여줍니다.

    • 예) 111(2) – 110(2) = 111(2) + 001(2) = 1000(2)에서 최상위 비트를 지우고 1을 더하므로 답은 1(2)입니다.
    • 예) 100(2) - 110(2) = ​100(2) + 001(2) = 101(2)에서 다시 1의 보수를 취하므로 답은 10(2)입니다.

     

    2의 보수 뺄셈

    2의 보수를 이용한 뺄셈은 배는 수의 2의 보수를 구한 다음 더합니다. 덧셈한 결과가 최상위 비트에서 자리 올림이 생겼다면 자리올림을 제외한 나머지 부분이 연산 결과이고, 자리 올림이 생기지 않았다면 연산 결과의 2의 보수를 구한 후 부호를 붙입니다.

    • 예) 111(2) - 110(2) = 111(2) + 010(2) = 1001(2)에서 최상위 비트를 지우므로 답은 1(2)입니다.
    • 예) 1​00(2) - 110(2) = 100(2) + 010(2) = 110(2)에서 답은 010(2)입니다.

    댓글

Designed by Tistory.