[수학과 프로그래밍] 소수점을 이진수로
이 카테고리에서는 단순히 수학적 공식 혹은 지식을 깊게 다루진 않는다.
프로그래밍과 연관 지어서 유용하게 사용할 수 있는 수학적 지식을 다룬다.
정수를 이진수로 변환하는 법은 알고 있다는 가정하에, 소수점을 이진수로 변환하는 방법이다.
정수부도 2의 N승으로 표현이 가능하다는 전제하에 소수점도 마찬가지로 표현할 수 있다.
예를 들어, 숫자 7 은 2^2 + 2^1 + 2^0 으로 110₂ 로 표현이 가능하다.
이를 똑같이 소수부에 적용한다면 숫자 0.75 는 2^(-1) + 2^(-2) 으로 0.11₂ 로 표현이 가능하다.
따라서 만약 7.75를 이진수로 표현한다면 110.11₂ 이다
추가로 아래 예들을 확인해보자
7.5
1. 정수부 : 7 => 111(2)
2. 소수부 : 0.5
-> 0.5 x 2 = 1.0
위에서부터 차례로 가져온다면
111.1₂
3.14
1. 정수부 : 3 => 11(2)
2. 소수부 : 0.14
-> 0.14 x 2 = 0.28
-> 0.28 x 2 = 0.56
-> 0.56 x 2 = 1.12 (정수부는 버린다)
-> 0.12 x 2 = 0.24
-> 0.24 x 2 = 0.48
-> 0.48 x 2 = 0.96
-> 0.96 x 2 = 1.92 (정수부는 버린다)
-> ...
위에서부터 차례로 가져온다면
11.0010001....
그렇다면 아래 숫자는 어떻게 바뀔까?
32.625
1. 정수부 : 32 => 100000(2)
2. 소수부 : 0.625
-> 0.625 x 2 = 1.25(정수부는 버린다)
-> 0.25 x 2 = 0.5
-> 0.5 x 2 = 1.0
위에서부터 차례로 가져온다면
100000.101
이해했다면 아래 문제를 풀어보자.
[C++] Interview Question : Binary to String (tistory.com)
[C++] Interview Question : Binary to String
Question 2진수를 문자열로 바꿔라 0.37와 같이 0과 1 사이의 실수가 double타입으로 주어졌을 때, 그 값을 2진수 형태로 출력하는 코드를 작성하라 제약사항 길이가 32이하인 문자열로 2진수로 정확하
googleyness.tistory.com