서론
컴퓨터는 0과 1로만 내용을 인식한다. 그렇다면 우리가 이용하는 숫자와 문자는 어떤 모습으로 저장이 될까?
정수
0과 1만 읽어 들이는 컴퓨터에 맞게 숫자를 바꿔야 한다. 그리고 이는 2진수 형태로 이루어진다.
- 양수와 음수를 표현하는 방법
컴퓨터는 양수와 음수를 MSB로 구분한다.
MSB가 0이면 양수, 1이면 음수인 것이다.
MSB?
MSB란, Most Significant Bit의 약자로, 직역하자면 가장 중요한 비트이다.
1 | 0 | 1 | 0 |
위의 4bit 2진수가 있다고 하자.
8 | 4 | 2 | 1 |
비트는 각각 위와 같은 10진수 숫자를 표현한다.
즉, 1010이라는 2진수는 8 + 2 = 10이라는 10진수와 같은 것이다.
이때, 가장 왼쪽에 있는 비트가 0이냐 1이냐에 따라 결과의 차이가 가장 크기 때문에 이 비트를 MSB라고 한다.
이를 이용해 양의 정수와 음의 정수를 구분한다.
반대로 가장 오른쪽에 있는 비트는 값에 미치는 영향이 가장 작으므로 LSB(Least Significant Bit)라고 한다.
- 양의 정수
양의 정수의 경우 우리가 사용하는 10진법을 2진법으로 바꿔서 저장한다.
5이면 0101, 30이면 0001 1110과 같이.
여기서 4bit씩 표현하는 이유는
1. 16진법을 나타내기에 편하면서
2. 10진법의 한 자리를 모두 표현하기 위함이다.
- 음의 정수
음의 정수의 경우엔 2의 보수를 하고 저장을 한다.
2의 보수를 하는 이유는 별도의 계산 없이 뺄셈을 할 수 있기 때문이다.
1) 보수를 취하지 않은 경우
-5를 예로 들어보자.
음수이므로 MSB는 1이며, 절댓값이 5이므로 결과는 1101이다.
5 - 5를 한다면 0101 + 1101 = 10010.
여기서 1은 자리올림으로 결과는 0010이다.
원래라면 0000이 나와야 하는데 결과가 이상하다.
2) 1의 보수
이를 해결하기 위해 음수는 1의 보수를 사용하였다.
1의 보수란 0과 1을 바꾸는 것으로 숫자 5, 0101을 1의 보수하면 숫자 -5, 1010이 된다.
이 값을 이용해 5 - 5를 해보자. 0101 + 1010 = 1111이다.
위의 결과에서 1의 보수의 문제점을 알 수 있는데, 0000과 1111 둘 다 0인 것이다.
3) 2의 보수
이 부분을 해결하고자 2의 보수를 이용하기 시작했다.
2의 보수란 1의 보수가 된 값에 1을 더하는 것이다.
즉, 1의 보수가 된 -5, 1010에 1을 더해 1011이 되는 것이다.
2의 보수를 한 값을 이용해 5 - 5를 해보자.
0101 + 1011 = 10000. 이때, 1은 자리올림으로 결과는 0000이다.
음수와 양수를 더했을 때 올바른 값이 나왔다.
결론
양의 정수는 10진수를 2진수로 바꿔서,
음의 정수는 2의 보수를 이용해 컴퓨터가 읽을 수 있도록 한다.
2의 보수를 하는 이유는 뺄셈을 했을 때 올바른 값을 별다른 계산 없이 출력하기 위해서.
책과 여러 인터넷 정보를 이용해 공부했는데, 자세히 알면 알수록 모르는 내용들이 나와서 더욱 노력해야겠다.
'컴퓨터 구조' 카테고리의 다른 글
컴퓨터구조 - 실수 저장 (0) | 2021.03.23 |
---|---|
컴퓨터구조 - 문자 저장 (0) | 2021.03.18 |