Java 진법 4

2021. 5. 28. 18:00Java

음수를 2진수로 표현하기

10진 음의 정수를 2진수로 변환하려면, 먼저 10진 음의 정수의 절대값을 2진수로 변환한다. 그 다음에 이 2진수의 2의 보수를 구하면 된다. 예를 들어 -5의 2진 표현을 구하는 과정은 다음과 같다.

위의 방법은 부호가 다르고 절대값이 같은 두 정수의 2진 표현이 서로 2의 보수 관계에 있다는 것을 이용한 것으로 복잡해 보이지만 간단하다. 절대값은 부호만 떼어내면 되고, 10진수를 2진수로 변환하는 방법은 이미 배웠고, 2의 보수로 변환하는 방법도 쉽다. 이미지의 마지막 2의 보수가 음수의 2진수값이 된다. 그러므로 -5 → 1011(2)

2의 보수 구하기

서로 2의 보수의 관계에 있는 두 수를 더하면 0(자리올림 발생)이 된다. 예를 들어 2진 수 0101의 2의 보수를 구하려면 0101에 어떤 수를 더하면 0이 되는지 알아내야 한다.

0101(2)을 0000(2)으로 만들려면 정말 간단하다 1011(2)이 된다. 1011(2)는 10진수로 11가 된다. 뺼셈으로 2의 보수를 간단히 구할 수 있지만 자리수가 많아지면 뺼셈도 쉽지 않다. 뺼셈의 방법은 넘어가도록하자.

다행히 뺼셈보다 2의 보수를 더 간단히 구하는 방법이 있다. 1의 보수를 구한다음 1을 더한다. 그러면 2의 보수를 구할 수 있다.

2의 보수 = 1의 보수 + 1

1의 보수는 0을 1로, 1을 0으로만 바꾸면 되므로 구하기 쉽다. 예를 들어 2진수 0101의 1의 보수는 1010이다 여기에 1을 더하기만 하면 2의 보수가 된다.

길게 설명했는데 다 이해하지 못해도 괜찮다. 아래의 내용만 확실히 기억하자.
음수의 2진 표현은 구하는 방법
1. 음수의 절대값을 2진수로 변환한다.
    → -5의 절대값인 5를 2진수로 변환한다. 10진수 5를 2진수로 변환하면 0101(2)이다.
2. (1)에서 구한 2진수의 1을 0으로 0은 1로 바꾼다. (1의 보수 구하기)
    → 0101이 1010이 된다
3. (2)의 결과에 1을 더한다.(2의 보수 구하기. 1의 보수 + 1)
    → 1010에 1을 더하면 1011이 되고, 이것이 -5의 2진 표현이다.

'Java' 카테고리의 다른 글

Java 기본형 2  (0) 2021.05.30
Java 기본형  (0) 2021.05.29
Java 진법 3  (0) 2021.05.27
Java 진법 2  (0) 2021.05.26
Java 진법 1  (0) 2021.05.25