1) 음수의 2진 표현 - 2의 보수법
- n비트의 2진수로 표현할 수 있는 값의 개수는 모두 2^n개이므로,
4비트의 2진수로는 모두 2^4(=16)개의 값을 표현할 수 있다.
이 값을 모두 '부호없는 정수(0과 양수)'의 표현에 사용하면,
'0부터 15까지의 정수'를 나타낼 수 있다.
- 그러면 4비트의 2진수로 부호있는 정수, 즉 양수와 음수를 모두 표현하려면 어떻게 해야 할까?
4비트 2진수의 절반인 8개는 0으로 시작하고, 나머지 절반은 1로 시작하니까,
1로 시작하는 2진수를 음수표현에 사용하자.
이렇게 하면, '왼쪽의 첫 번째 비트(MSB)'가 0이면 양수, 1이면 음수이므로
첫 번째 비트만으로 값의 부호를 알 수 있게 된다.
2) 2의 보수법
- 어떤 수의 'n의 보수'는 더했을 때 n이 되는 수를 말한다.
7의 '10의 보수'는 3이고, 3의 '10의 보수'는 7이다.
3과 7은 '10의 보수의 관계'에 있다고 한다.
'2의 보수 관계' 역시, 더해서 2가 되는 두 수의 관계를 말하며 10진수 2는 2진수로 '10'이다.
2진수로 '10'은 자리올림이 발생하고, 0이 되는 수를 뜻한다.
그래서 '2의 보수 관계'에 있는 두 2진수를 더하면 '(자리올림이 발생하고)0이 된다.'
- 2진수 '0101'와 '1011'은 서로 '2의 보수 관계'에 있으며, 이 두 2진수를 더하면 0이 된다.
이 덧셈이 10진수로도 0이 되려면, 2진수 '0101'가 10진수로 5니까,
2진수 '1011'은 10진수로 -5이어야 한다.
-이처럼 서로 '2의 보수 관계'에 있는 두 2진수로 5와 -5처럼 절대값이 같고
부호가 다른 두 10진수를 표현하는 것을 '2의 보수법'이라고 하며,
현재 대부분의 시스템이 '2의 보수법'으로 부호있는 정수를 표현한다.
'자바의 정석' 카테고리의 다른 글
[자바의 정석 2권] Optional (0) | 2024.12.24 |
---|---|
[자바의 정석 2권] fork & join 프레임웍(1) - Fork&Join 프레임웍이란? (0) | 2024.12.23 |
[자바의 정석 2권] 직렬화(Serialization) (0) | 2024.12.23 |
[자바의 정석 1권] 비트와 바이트 (0) | 2024.09.18 |
[자바의 정석] 쓰레드의 동기화 (0) | 2024.08.18 |