서명되지 않은 문자에 대한 호기심이 있습니다. 서명되지 않은 문자에 대한 호기심이 있습니다. 실수로 unsigned char에서 빼기 연산을했는데 그렇게해서는 안된다는 것을 알고 있습니다. 그러나 나는 특정한 대답이 어떻게 왔는지 조금 궁금합니다. 아무도 이것을 비트 수준에서 설명 할 수 있습니까?
unsigned char x = 150;
unsigned char y = 229;
unsigned char z = x - y;
마침내 디버깅하는 동안 177 for z를 얻었습니다.
Visual Studio 2008에서이 코드를 실행하고 있습니다.
부호없는 것으로 선언 된 부호없는 정수는 산술 모듈로 2 ^ n의 법칙을 준수해야합니다. 여기서 n은 특정 정수 크기의 값 표현에서 비트 수입니다.
(C ++ 11 표준, 3.9.1.5)
대부분의 플랫폼에서 a unsigned char
는 8 비트이므로 결과는 150-229 mod 256 = -79 mod 256 = 177입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다