1의 보수 / 2의 보수란?
위키백과에 따르면, 1의 보수를 다음과 같이 정의 하고 있다:
보수라는 것은 무엇일까? 위키백과에는 다음과 같이 적혀있다:
현재 사용되는 대부분의 컴퓨터는 2의 보수를 사용하여 수를 다루곤 한다.
본 포스트에서는 2의 보수가 어떤 것이며, 1의 보수는 어떤 것인지 설명하도록 하겠다.
컴퓨터는 뺄셈을 어떻게 할까? 음의 부호와 양의 부호는 어떻게 할까?
이러한 질문들의 답을 이 포스트를 통해 알 수 있을 것이다
컴퓨터는 부호(음, 양)를 어떻게 다룰까?
답은 가장 앞에 있는 비트를 사용한다. 당신의 컴퓨터가 32bit라면, 이중 맨 앞의 1bit(최상위 비트)는 음수, 혹은 양수를 표기하기 위해 사용되는 것이다.
1의 보수는 다음과 같이 구할 수 있다.
구하고자 하는 수의 한 자릿수를 추가한 후, 모든 자릿수가 1인 수를 만들어, 빼면 1의 보수를 구할 수 있다(글로는 이해하기 어려우니 이해하지 않아도 좋다)
이는 다시 말해 1의 수를 구하고자 하는 수의 0과 1을 반전시키면 된다는 뜻이다.
80의 1의 보수를 구해보자. 80은 2진수로 0101 0000 이다.
11111111
-) 01010000
------------
00101111
여기서 얻은 101111을 1의 보수라고 부른다. 1의 보수에는 문제가 하나 있는데, 바로 0이 두 개가 된다는 점이다. 왜냐하면 1의 보수로 데이터를 표기할 때에는 8bit로 데이터를 표기한다 가정할 때 7bit만 사용하기 때문이다. 앞의 한 자릿수는 부호를 표기하기 위한 값으로 사용되기 때문이다.
1000 0000(2)이라는 수는 1의 보수 표기법으로 표기할 때 -0이 되게 되고, 0000 0000이라는 수는 +0이 된다. 이러한 이유로, 컴퓨터에서는 2의 보수를 사용한다.
2의 보수는 어떤 것일까?
2의 보수는 1의 보수의 값에 1을 더한 것이다.
즉, 0010 1111에다가 1을 더하게 되면, 0011 0000 이라는 수가 만들어지게 된다.
2의 보수는 어디에 사용할까?
컴퓨터는 더하기밖에 할 줄 모른다. 곱셈은 더하기만 있어도 가능하지만, 뺄셈과 나눗셈은 어떻게 할까?
1. 빼고자 하는 수의 2의 보수를 구하고, 더한다.
2-1. 이 결과로 최상위비트(음과 양을 구분하는 비트)가 자리 올림이 되었다면 최상위 비트를 제외한 나머지 부분이 연산 결과이다.
2-2. 그렇지않았다면 연산 결과의 2의 보수를 구한 후 -부호를 붙이면 된다.
직접 해보자.
계산의 편의를 위해, 표기의 편의를 위해 4bit 식으로 표기하도록 하겠다.
15 - 12 는 컴퓨터가 어떻게 계산할까?
12는 2진수로 1100다. 그렇다면 2의 보수는 0100 이 된다.(1의 보수를 구한 후, 1을 더함)
이제, 둘을 더해보자.
1111 (15의 2진수)
+) 0100(12의 2의 보수)
------------
10011(자리 올림됨)
따라서 나머지 부분인 11이 답인 3이 된다.
계산값이 음수가 나오는 경우는 다음과 같을 수 있다.
12 - 15
15의 2의 보수는 0001이다. 12의 2진수는 상술했듯 1100이다.
1100
+) 0001
--------
1101
값이 자리올림이 되지 않았다. 그렇다면, 이 수의 2의 보수를 다시금 구하고, 음의 부호를 붙이면 우리가 구하고자 했단 값이 나온다.
1101의 2의 보수는 0011 이다.(1의 보수를 구한 후, 1을 더함)
여기에다 음의 부호를 붙이면 값이 나왔다. -3 이다.
컴퓨터는 계산기로부터 시작되었다는 것이 더더욱 와닿게 해주는 공부였다.
1의 보수란 어떤 수를 커다란 2의 제곱수-1에서 빼서 얻은 이진수이다.그렇다면 2의 보수는 어떠할까? 마찬가지로 위키백과에선 다음과 같이 정의 하고 있다:
2의 보수란 어떤 수를 커다란 2의 제곱수에서 빼서 얻은 이진수이다.사실 잘 와닿지 않는다. 이들은 무엇을 의미하는것일까?
보수라는 것은 무엇일까? 위키백과에는 다음과 같이 적혀있다:
보수(補數)는 보충을 해주는 수를 의미한다.
현재 사용되는 대부분의 컴퓨터는 2의 보수를 사용하여 수를 다루곤 한다.
본 포스트에서는 2의 보수가 어떤 것이며, 1의 보수는 어떤 것인지 설명하도록 하겠다.
컴퓨터는 뺄셈을 어떻게 할까? 음의 부호와 양의 부호는 어떻게 할까?
이러한 질문들의 답을 이 포스트를 통해 알 수 있을 것이다
컴퓨터는 부호(음, 양)를 어떻게 다룰까?
답은 가장 앞에 있는 비트를 사용한다. 당신의 컴퓨터가 32bit라면, 이중 맨 앞의 1bit(최상위 비트)는 음수, 혹은 양수를 표기하기 위해 사용되는 것이다.
1의 보수는 다음과 같이 구할 수 있다.
구하고자 하는 수의 한 자릿수를 추가한 후, 모든 자릿수가 1인 수를 만들어, 빼면 1의 보수를 구할 수 있다(글로는 이해하기 어려우니 이해하지 않아도 좋다)
이는 다시 말해 1의 수를 구하고자 하는 수의 0과 1을 반전시키면 된다는 뜻이다.
80의 1의 보수를 구해보자. 80은 2진수로 0101 0000 이다.
11111111
-) 01010000
------------
00101111
여기서 얻은 101111을 1의 보수라고 부른다. 1의 보수에는 문제가 하나 있는데, 바로 0이 두 개가 된다는 점이다. 왜냐하면 1의 보수로 데이터를 표기할 때에는 8bit로 데이터를 표기한다 가정할 때 7bit만 사용하기 때문이다. 앞의 한 자릿수는 부호를 표기하기 위한 값으로 사용되기 때문이다.
1000 0000(2)이라는 수는 1의 보수 표기법으로 표기할 때 -0이 되게 되고, 0000 0000이라는 수는 +0이 된다. 이러한 이유로, 컴퓨터에서는 2의 보수를 사용한다.
2의 보수는 어떤 것일까?
2의 보수는 1의 보수의 값에 1을 더한 것이다.
즉, 0010 1111에다가 1을 더하게 되면, 0011 0000 이라는 수가 만들어지게 된다.
2의 보수는 어디에 사용할까?
컴퓨터는 더하기밖에 할 줄 모른다. 곱셈은 더하기만 있어도 가능하지만, 뺄셈과 나눗셈은 어떻게 할까?
1. 빼고자 하는 수의 2의 보수를 구하고, 더한다.
2-1. 이 결과로 최상위비트(음과 양을 구분하는 비트)가 자리 올림이 되었다면 최상위 비트를 제외한 나머지 부분이 연산 결과이다.
2-2. 그렇지않았다면 연산 결과의 2의 보수를 구한 후 -부호를 붙이면 된다.
직접 해보자.
계산의 편의를 위해, 표기의 편의를 위해 4bit 식으로 표기하도록 하겠다.
15 - 12 는 컴퓨터가 어떻게 계산할까?
12는 2진수로 1100다. 그렇다면 2의 보수는 0100 이 된다.(1의 보수를 구한 후, 1을 더함)
이제, 둘을 더해보자.
1111 (15의 2진수)
+) 0100(12의 2의 보수)
------------
10011(자리 올림됨)
따라서 나머지 부분인 11이 답인 3이 된다.
계산값이 음수가 나오는 경우는 다음과 같을 수 있다.
12 - 15
15의 2의 보수는 0001이다. 12의 2진수는 상술했듯 1100이다.
1100
+) 0001
--------
1101
값이 자리올림이 되지 않았다. 그렇다면, 이 수의 2의 보수를 다시금 구하고, 음의 부호를 붙이면 우리가 구하고자 했단 값이 나온다.
1101의 2의 보수는 0011 이다.(1의 보수를 구한 후, 1을 더함)
여기에다 음의 부호를 붙이면 값이 나왔다. -3 이다.
컴퓨터는 계산기로부터 시작되었다는 것이 더더욱 와닿게 해주는 공부였다.
Comments
Post a Comment