바위타는 두루미

5.2 2진수를 문자열로 본문

Study/Interview준비

5.2 2진수를 문자열로

DoRoMii 2019. 8. 2. 19:58
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