양수를 비트로 표현하는 방법은 간단하다. 10진수로 표현된 양의 정수를 2진수로 변환하여 비트로 표현할 수 있다.
예를 들어 123은 2진수로 변환하면 1111011이다. 즉 7자리의 2진수가 되는 것이고, 7비트의 수라고 말할 수 있다.
10진수를 2진수로 표현하는 방법은 따로 포스팅을 해두었다. 아래 링크를 참고하면 된다.
<10진수를 2진수로 변환하는 방법>
음수를 표현하는 방법은 조금 복잡하다. 여러 가지 표현법이 있는데 그 중 2의 보수표현법을 주로 사용한다.
2의 보수 표현법은 모든 비트를 뒤집고 +1을 하는 것이다. 이 방법은 0도 1가지로 표현가능하고 연산도 가능하여 음수는 주로 2의 보수표현법을 사용해 표기한다.
✨ 부호와 크기 표현법, 1의 보수표현법을 사용하지 않는 이유
: 부호와 크기 표현법은 부호만 바꾸고 숫자는 똑같이 표현하는 방법이다. 이 방법은 0을 표현하는 방법이 두 가지라 비용이 낭비되며 XOR과 AND를 통한 덧셈 계산을 사용할 수 없어 비효율 적이라 사용하지 않는다.
1의 보수 표현법은 비트를 모두 뒤집는 방법이다. 이 방법도 0을 두 가지 방식으로 표현한다는 문제가 있고 덧셈을 할 때 순환올림을 사용해야해서 비효율적이다.
실수는 고정표현법과 부동표현법 두 가지 방법으로 표현할 수 있다.
고정표현법은 실수를 정수부와 소수부로 나누고 소수부의 자릿수를 미리 정하여 고정된 자릿수의 소수를 표현하는 방식이다. 예를 들어 5비트가 있으면 제일 첫번째 비트는 부호를, 앞 쪽 2비트는 정수를 뒷 쪽 2비트는 실수를 표현하기로 정해놓는 것이다.
이 방법은 잘 작동하긴 하지만 많은 양의 수를 표현하기 어려워 범용 컴퓨터에서는 잘 사용하지 않는다.
: 실수를 가수부와 지수부로 나누어서 표현하는 방식이다.지수의 크기에 따라 소수점의 위치가 이동되므로 부동표현법(floating point)라는 이름이 붙었다.
가수부는 소수점 왼쪽이 한 자리 뿐인 소수를 의미하고, 지수부는 소숫점을 표현하는 10의 거듭제곱을 의미한다.
예를 들어 0.0012는 1.2 * 10⁻³으로 표현할 수 있다.
2진법으로 표기하려면 지수부분을 2를 밑으로하는 수로 표현하면 된다.
부동표현법은 불편한 점은 많지만 일반적인 컴퓨터에서 소수를 표현할 때 채택하는 방식이다. 부동표현법을 더 정밀하게 사용하기 위해 IEEE 754라는 표준법을 따른다.
IEEE표준법은 정밀도를 높이기 위해 몇 가지 방법을 사용한다.
부동소수점은 두 가지 수를 많이 사용한다. 32비트의 float형 실수는 기본정밀도 부동소수점 수를 사용하고 64비트의 double형 실수는 2배 정밀도 부동소수점 수를 사용한다.
이름처럼 2배 정밀도수가 기본 정밀도수보다 정밀도도 높고 표현하는 수도 많다.