2017-11-28 34 views

답변

2

문제는 당신이 사용하는 경우이다 char c = 197char 유형이 오버 플로우되어 음수 (-59)가 생성됩니다. 거기에서 시작하여 더 큰 유형으로 어떤 변환을 할 지 상관없이 음수로 남습니다.

two's complement의 작동 방식을 알아야하는 이유를 완전히 이해하십시오.

기본적으로 -59192은 같은 방식으로 해석되는 데이터 유형에 따라 1100 0101 같은 이진 표현을 갖습니다. 16 진수 형식을 사용하여 인쇄 할 때 이진 표현 (메모리에 저장된 실제 값)은 사용 된 것으로, C5을 생성합니다. charshort/unsigned short로 변환되면

, 그것은 두 가지 경우 모두에 대한 1111 1111 1100 0101 (FFC5)는 그 short/unsigned short 표현 -59로 변환된다.

가 데이터 타입 (unsigned char, short, unsigned short ...) 처음부터을 나타낼 수있는 변수에 초기 값 (197)를 저장하는 것을 수행하는 올바른 방법.