:: 게시판
:: 이전 게시판
|
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다. 통합 규정을 준수해 주십시오. (2015.12.25.)
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
18/12/15 17:11
찾아보니 1001 0110 이 맨 앞수가 1이니까 그 뒷 수 001 0110(즉 십진수로 22)에서 128을 빼서 -106을 리턴하는 것 같은데요...
그렇다면 1000 0000 일 경우 뒷수 000 0000 (십진수 0)에서 128을 빼면 -128이 리턴되는거 아닐까요? 저도 지금 막 검색해서 쓰는거라 정답이라고 말씀드릴 순 없습니다만..
18/12/15 17:33
signed / unsigned로 검색해보시면 빠르지 싶습니다만... 이거같은 경우엔 signed의 범위 때문에 그렇게 될 겁니다.
(signed는 음수, 양수를 다 표현할 수 있고 unsigned는 양수만 표현하는데, signed가 음수, 양수를 다 표현하는 건 한 글자를 떼서 음양 표시를 위해 써먹기 때문이라고 비유할 수 있겠죠.) 2진법으로 표현하면 01111111이 127이 되는데, 첫번째 0은 양수라는 뜻으로 남겨놓은 겁니다. signed에서 음수를 표시하기 위해서는 첫번째 0이 1이 되면 되는데, 그럼 반대로 이진법으로 10000000은 음수를 나타내게 되고, -128이 되게 됩니다.
18/12/15 17:43
진리님의 설명을 조금 더 가필하면...
8 비트로 표현할 수 있는 숫자는 총 256개입니다. 0 ~ 127 까지 양수 128개와 -1 ~ -128 의 음수 128 개죠. 양수와 음수가 대칭일 것을 원한다면 -128 을 사용하지 않을 수는 있습니다만, -128과 +128 을 모두 사용할 수는 없죠.
18/12/15 18:11
맨 앞의 1이 부호를 결정하는데 1000 0000하고 0000 0000 둘 다 0이면 비효율적이므로 1000 0000은 -128로 사용하도록 만든 것 입니다.
18/12/17 14:32
(unsigned 8비트 정수형의 십진값) = b7(2^7)+b6(2^6)+b5(2^5)+b4(2^4)+b3(2^3)+b2(2^2)+b1(2^1)+b0(2^0)
(signed 8비트 정수형의 십진값) = -b7(2^7)+b6(2^6)+b5(2^5)+b4(2^4)+b3(2^3)+b2(2^2)+b1(2^1)+b0(2^0)
|