바위타는 두루미
5.2 2진수를 문자열로 본문
728x90
문제
0.72와 같이 0과 1 사이의 실수가 double 타입으로 주어졌을때 ,그 값을 2진수 형태로 출력하는 코드를 작성하라.
길이가 32이하인 문자열로 2진수로 정확히 표현할 수 없다면 ERROR를 출력하라
해결법
정수가 아닌 수를 이진수로 표현한다면 0.101(2)처럼 될 것이다.
소숫점 아래부분을 출력하기 위해서는 2를 곱해서 2n이 1보다 크거나 같은지를 확인하는 방법이 있다.
2*n이 1보다 크다는것은 소숫점 바로 다음수가 1이라는 뜻이고
사실 2를 곱한다는 것은 왼쪽으로 쉬프트 하는 것을 의미한다.
def printBinary(num):
if (num >=1 || num <= 0):
return "ERROR"
ans = ""
while num > 0
if len(ans)>=32:
return "ERROR"
r = num *2
if r >=1 :
ans +="1"
num = r-1
else :
ans += "0"
num = r
return ans
비슷한 방법으로 0.5와 비교하는 방법이 있다.
def printBinary(num):
if (num >=1 || num <= 0):
return "ERROR"
ans = ""
while num > 0
if len(ans)>=32:
return "ERROR"
ans += "1" if r >= 0.5 else "0"
num /=2
return ans
'Study > Interview준비' 카테고리의 다른 글
5.4 다음숫자 (0) | 2019.08.03 |
---|---|
5.3 비트 뒤집기 (0) | 2019.08.02 |
5.1 삽입 (0) | 2019.08.02 |
[개념정리] 비트조작 (0) | 2019.08.02 |
4.12 합의 경로 (0) | 2019.07.29 |
Comments