📌 진수 표기법에 대하여
우리가 어릴 때 부터 지금까지 접해왔던 숫자 표기법은 10진수이다.
하지만 프로그래밍 세계에서는 이와 별개로 3개의 표현법이 더 있다.
- 10진수는 항상 우리가 쓰던 방식이다.
- 8진수는 0~7까지는 10진수랑 같으며, 8이 되면 올림해서 10으로 표기한다.
- 2진수 컴퓨터가 받아들이는 디지털 신호이다. (0과 1로 표기)
- 16진수는 2진수를 쉽게 표현하기 위해서 4bit씩 나누어서 표기한다.
(09까지는 10진수와 같으며, 10부터는 af로 표기)
📌 값과 메모리
어떤 값이든 2진수로 표현할 수만 있다면
전기적 신호와 자기적 신호로 바꿀 수 있다. (★★★★★)
RAM/HDD
에 저장할 수 있다.2진수로 바꾸기 위한 규칙이 필요하다. (4가지)
2의보수법을 사용한다.
📌 RAM과 HDD에 어떻게 저장되는가
📌 2진수의 값 표현 규칙(4가지)
Sign-Magnitude(부호 절대값)
부호 절대값 방식은 가장 쉽게 생각할 수 있는 방식이다.
최상위비트를 부호비트(0이면 양수, 1이면 음수)로 사용하고, 나머지는 절대값을 표현한다.
위의 예를 보면 5-3을 수행하려고 한다.
사람의 입장에서는 정말 쉽게 2라고 답변을 할 수 있지만, 안타깝게도 컴퓨터는 음수를 계산하지 못한다.
위 방법은 대한 방법으로 나온것인데 몇가지 문제점들이 보인다.- 0을 +0과 -0으로 나누기가 애매하다.
- 계산한 값이 다르게 나온다.
그에 대한 대안으로 나온 것이 1의 보수법, 2의보수법이다.
1의 보수는 어떤 수를 더해서 1이 되게끔 보충해주는 수를 말한다.
1의 1의 보수는 0이다.
0의 1의 보수는 1이다.
결론적으로 1의보수는 2진수로 바꾼 수를 역으로 뒤집으면 된다.
하지만 아직도 값이 일치하지 못한다.
2의 보수는 어떤 수를 더해서 2가 되게끔 보충해주는 수를 말한다.
2의 보수는 1의 보수에서 +1을 더한 값이다.
위의 방법으로 답을 구하면 정확하게 일치한다.
참고로 8bit를 넘어가는 수는 버린다.
Excess-K는 K로 지정된 값을 무조건 더하는 방법이다. 음수던 양수던 상관하지 않는다.
📌 결론
- 1번과 4번의 방법은 부동소수점을 2진수로 표현할 때 지수부를 이 규칙에 따라 표현한다.
- 현대의 대부분의 컴퓨터는
2의보수
를 음수 표현 방법으로 사용한다.
'TIL' 카테고리의 다른 글
🚀 bitcamp TIL (21.07.07) (0) | 2021.07.07 |
---|---|
🚀 bitcamp TIL (21.07.06) (0) | 2021.07.06 |
🚀 bitcamp TIL (21.07.02) (0) | 2021.07.04 |
🚀 bitcamp TIL (21.07.01) (0) | 2021.07.01 |
🚀 bitcamp TIL (21.06.28 ~ 21.06.30) (0) | 2021.07.01 |