1의 보수와 2의 보수

2022. 9. 8. 06:00Study/Programming

반응형

 

일상생활에서 사용하는 숫자는 10진법으로 되어있다.

 

0~9까지 10개의 숫자를 사용하며 10을 단위로 숫자가 하나 올라간다.

 

컴퓨터는 0과 1로 구성된 2진법을 사용하기 때문에 10진법으로된 숫자를 2진법으로 바꿔야한다.

 

8개의 비트로 숫자를 표현하는 경우

첫번째 비트가 부호를 표시하고 나머지 비트가 숫자를 나타낸다.

부호 64 32 16 8 4 2 1

각 자리에 0 또는 1이 입력되는데 각 자리가 의미하는 숫자는 오른쪽부터 1, 그리고 2배씩 늘어난다.

3을 표현하기 위해서 오른쪽 2자리가 11으로 표시되며 나머지는 0으로 표시된다. (2+1 = 3)

 

이렇게 10진수를 2진수로 바꿀 수 있다.

 

숫자에는 +인 양수와 -인 음수가 존재하는데 이때 음수를 표현하는 방법은 부호를 반대로 하는 것이다.

0이 양수, 1이 음수이다.

 

그렇다면 3을 나타내는 0000 0011에서 첫번째 비트만 바꾸어 -3을 표현하기 위해 1000 0011이라고 하면 안된다.

그 이유는 컴퓨터에서 연산을 하는 경우 3+(-3)=0이 나와야 하지만 결과는 1000 0101인 -5가 나온다.

 

이를 위해 1의 보수를 사용한다.

1의 보수를 만들기위해 0과 1을 바꾸어 준다음에 1을 더해준다.

0000 0011 -> 1111 1100 -> 1111 1101 (-3)

 

덧셈을 하는 경우

0000 0011

1111 1101

0000 0000(=)이 나온다.

반응형