• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

32비트에 음수 양수 다 있으려면 2^32 나누기 2 한만큼이 최대값이겠네요?

22.03.16 23:23 작성 조회수 404

1

32비트에 음수 양수 다 있으려면 2^32 나누기 2 한만큼이 최대값이겠네요?

2147483647이라는 10진수를 2진수로 변환해보니

1만으로 32비트를 채우더라구요 맞나요?

11111111111111111111111111111111 -> 2147483647(10진수)

그러면 -2147483647을 표현하려면 1의보수인

0만으로 32비트를 채우고나서 맨오른쪽자리를 1로 바꿔주면

그게 음수형태로 나타내는거죠?

00000000000000000000000000000001 이렇게요

근데 위의 2진수를 10진수로 나타내면 결국 1 아닌가요?

답변 1

답변을 작성해보세요.

1

나르비님의 프로필

나르비

2022.03.17

안녕하세요 

int 형을 32bit 에 저장할 때, 맨 앞의 1bit 는 "부호 비트" 로 사용됩니다. 

0일 경우에는 + ,  1일 경우에는 -로 표현하는 방식입니다. 

 

관련해서 한 번 찾아보신다면 더 많은 정보를 얻을 수 있을 겁니다. 

아래에 참고하실만한 자료를 남겨드립니다. 

 

https://modoocode.com/308

seung lee님의 프로필

seung lee

질문자

2022.03.17

아 자료보고 이해했습니다!!

0111 1111 1111 1111 1111 1111 1111 1111 이 숫자가 int 양수의 최대치이고

여기서 1을 더하면

1000 0000 0000 0000 0000 0000 0000 0000 이렇게 되는데

맨 앞이 1이 와서 음수가 되어버린거고 이 값을 알려고 2의 보수법으로 바꿔주면

1000 0000 0000 0000 0000 0000 0000 0000 이값이되고 이 값을 10진수로 바꾸면

2^31 이라는 값에 음수의 형태를 띈다는 거죠?

나르비님의 프로필

나르비

2022.03.17

정확합니다. ^^