ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JUNGOL 실력키우기 1274 : 2진수를 10진수로
    보관함 2017. 10. 27. 19:23


    2진수를 입력받아 10진수로 바꾸어주는 프로그램을 작성하시오.

     

    입력받는 2진수는 8비트로 구성되어있으며 최상위비트는 부호비트이다.
    즉, 최상위 비트의 값이 0이면 양수, 1이면 음수이며 음수의 경우 2의 보수로 구성되어있다.

     

    최상위 비트를 제외한 나머지 7개의 비트를 1, 2의 보수로 바꾸는 방법:

     

    1의 보수는 2진수의 1과 0을 바꾸면 된다.
    1101000 -> 0010111
      (2진수)     (1의 보수)

     

    2의 보수는 1의 보수의 마지막 비트에 1을 더한다.
      0010111 (1의 보수)
    +       1
    --------- 

      0011000 (2의 보수)



    입력의 첫 줄에 8자리의 2진수가 들어온다.



    출력의 첫 줄에 10진수로 변환한 값을 출력한다.


    [Copy]
    00000101
    [Copy]
    5


    [Copy]
    10011000
    [Copy]
    -104

     


     

    이전과 마찬가지로 기본 문제에서 힌트를 준 뒤 거기에 응용하는 식으로 문제가 나왔습니다.

    이번에도 간단하게 해결 할 수 있었는데, 부호가 있다는 것만 주의하면 될 것 같습니다. 사실 부호 변환도 친절하게 다 알려줬군요.

    부호 변환시에 1을 더해주는 것에서 조금 더 깔끔하게 할 수도 있을 것 같은데 당장 생각이 나질 않네요.

     

     

     

    JUNGOL) 문제은행) 실력키우기) 2진수를 10진수로

    댓글

Designed by Tistory.