인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

sonwo6717님의 프로필 이미지

작성한 질문수

홍정모의 따라하며 배우는 C++

3.7 이진수 Binary Numbers

2진수 1010 0010 을 무부호 10진수로

작성

·

69

1

3.7 이진수

마지막 문제풀이에서 2진수 1010 0010 을 무부호 10진수로 바꾸는 문제가 있엇는데

문제에서 2진수는 부호가 있는지 없는지 알려주지 않았으니 무부호 10진수로 바꾸더라도 답이 2개가 나올 수 있는거 아닌가요?

부호가 있는 2진수인 경우 -> 34

부호가 없는 2진수인 경우 -> 162

답변 2

2

Soobak님의 프로필 이미지

안녕하세요? 질문&답변 도우미 Soobak 입니다.

 

흥미로운 질문이시네요.

"2진수"그 자체는 프로그래밍에서의 자료형이 아닌 단순한 숫자 표현의 방식으로, 1010 0010₂ 라는 순수한 숫자, 즉 부호 없는 2진수 로 해석하는 것이 가장 자연스럽다고 생각합니다.

다만, 말씀해주신 내용처럼, 비트가 부호에 대한 정보를 담고 있는 경우를 고려하는 맥락에서는 질문자님의 말씀대로 두 가지 경우로 변환될 수 있을 것 같습니다.

꼼꼼하게 경우를 나누어서 잘 생각하신 점이 인상 깊네요!

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. sonwo6717님.

질문하신 2진수의 부호 여부에 따른 10진수 변환에 대해서 잘 이해하고 계신 것 같습니다. 2진수로 주어진 값이 부호가 없는(unsigned) 경우와 부호가 있는(signed) 경우의 결과가 다르게 나올 수 있습니다.

  1. 부호 없는(unsigned) 경우: 이진수 1010 0010128 + 32 + 2로 계산되어 10진수로 변환하면 162가 됩니다.
  2. 부호 있는(signed) 경우: MSB(최상위 비트)가 부호 비트로 사용되며, 음수를 표현하는 데 주로 2의 보수법이 사용됩니다. 이진수 1010 0010를 2의 보수법으로 해석하면, -128 + 32 + 2로 계산되어 10진수 -94로 변환됩니다.

하지만 질문에서는 부호 있는 경우에 대한 결과를 34로 언급하셨는데, 이는 계산 중 오류가 있을 수 있습니다. 부호가 있는 경우는 위에서 설명한 대로 -94로 변환됩니다.

이와 관련하여 더 자세한 설명은 다음 링크들을 참고하시기 바랍니다:
- singned 정수인지 unsigned 정수인지 구별은 어떻게 하나요? - 이진수의 부호 여부에 대한 설명이 포함되어 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.