본문 바로가기
개발/알고리즘

소수점 이진수 변환과 2의 보수 변환

by amkorousagi 2023. 3. 8.

소수점 이진수 변환과 2의 보수 변환

 

소수점 이진수 변환


일반적인 정수의 이진수 변환은 다음과 같습니다.

 

  1. 2로 나누어 몫과 나머지를 구한다
  2. 몫이 0이 될 때까지 몫을 대상으로 과정 1을 반복한다
  3. 처음 구한 나머지가 가장 오른쪽에 오도록 나머지를 순서대로 적는다

정수의 이진수 변환의 예시는 다음과 같습니다.

 

예시) 35

35/2 = 17... 1

17/2 = 8... 1

8/2 = 4... 0

4/2 = 2... 0

2/2 = 1... 0

1/2 = 0... 1

35 = 100011_(2)

 

이를 나눗셈 검산을 통해 나타내보면 왜 이진수 변환에 2의 나눗셈이 필요한 지 알 수 있습니다.

 

= 35

= 100011_(2)

= 1*2^5 + 0*2^4 + 0*2^3 + 0*2^2 + 1*2^1 + 1*2^0

= 2(2(2(2(2(2(0) + 1)  + 0) + 0) + 0) + 1) + 1

 

이처럼 위의 식을 보면 나눗셈 검산을 통해서 자릿수 변환을 할 수 있음 확인할 수 있습니다.

 

또 이진수로 수를 표기하면 8진법과 16진법으로 변환하는 것이 매우 쉽습니다.

= 35

= 100011_(2)

= 100 011 = 043_(8) 8=2^3 이므로 3비트씩

= 0010 0011 = 0x23_(16) 16=2^4 이므로 4비트씩

 

그러나 소수점 아래의 숫자의 경우 방법이 조금 다릅니다.

이는 소수점을 기준으로 소수점 위의 자릿수는 0 또는 양의 정수의 제곱이지만,

소수점 아래의 자릿수는 이의 반대인 음의 정수의 제곱이기 때문입니다.

따라서 2로 나누는 것이 아닌 반대로 2를 곱해야 함을 유추할 수 있습니다.

 

소수점 아래 숫자의 이진수 변환은 다음과 같습니다.

 

  1. 2를 곱하여 정수 부분과 소수 부분을 구한다
  2. 소수 부분이 0이 될 때까지 소수 부분을 대상으로 과정 1을 반복한다
  3. 처음 구한 정수 부분이 가장 왼쪽에 오도록 정수 부분을 순서대로 적는다

일반적인 정수 변환 과정에서 "몫"이 "소수 부분"으로 "나머지"가 "정수 부분"으로 바뀐 것을 알 수 있습니다.

또 처음 구한 것이 가장 "오른쪽"이 아니라 가장 "왼쪽"에 오도록 순서 또한 바뀐 것을 알 수 있습니다.

이는 양의 제곱이 아닌 음의 제곱으로 자릿수를 표현함으로 반대가 된 것입니다.

 

소수점 아래 숫자의 이진수 변환의 예시는 다음과 같습니다.

 

예시) 0.8125

0.8125*2 = 1.625 = 0.625 + 1

0.625 *2 = 1.25 = 0.25 + 1

0.25*2 = 0.5 = 0.5 + 0

0.5*2 = 1.0 = 0.0 + 1

0.8125_(10) = 0.1101_(2)

 

 

= 0.8125

= .01101_(2)

= 1*2^(-1) + 1*2^(-2) + 0*2^(-3) + 1*2^(-4)

= 0.5(0.5(0.5(0.5(0.5(0)+1)+0)+1) +1)

2의 보수 변환


2의 보수는 컴퓨터 분야에서의 대표적인 음수 표현법 중 하나입니다.

2의 보수와 원래 수를 더하면 모든 비트가 0이 되기 때문에 컴퓨터가 계산하기에 편리하기 때문입니다.

 

 

2의 보수를 얻는 방법은 다음과 같습니다.

  1. 2의 보수 = 1의 보수 + 1
    예시) 3의 2의 보수
    3 = 0000 0011
    3의 1의 보수 = 1111 1100 (0을 1로, 1을 0으로 뒤집기)
    3의 2의 보수 = 1111 1101 
  2. 2^n - n비트 수
    예시) 3의 2의 보수
    3 = 0000 0011
    2^8 = 1 0000 0000 = 1111 1111 + 0000 0001 (사실 1의 보수에 1 더하는 것과 같습니다.)
    2^8 - 3 = 1111 1101

 

 

참조


 

 

 

Binary number - Wikipedia

From Wikipedia, the free encyclopedia Number expressed in the base-2 numeral system A binary number is a number expressed in the base-2 numeral system or binary numeral system, a method of mathematical expression which uses only two symbols: typically "0"

en.wikipedia.org

 

Two's complement - Wikipedia

From Wikipedia, the free encyclopedia Mathematical operation on binary numbers, and a number representation based on this operation Two's complement is a mathematical operation to reversibly convert a positive binary number into a negative binary number wi

en.wikipedia.org

 

 

댓글