이유는 무엇입니까 코드 :왜의 int 결과에 ~ X를 수행 - (X + 1)
#include <iostream>
int main()
{
int x = 1;
int y = ~x;
std::cout << y;
}
항상 인쇄 - (X + 1)? x = 00000001이라면, y = 11111110이 아닌가?
이유는 무엇입니까 코드 :왜의 int 결과에 ~ X를 수행 - (X + 1)
#include <iostream>
int main()
{
int x = 1;
int y = ~x;
std::cout << y;
}
항상 인쇄 - (X + 1)? x = 00000001이라면, y = 11111110이 아닌가?
two's complement 시스템에 있기 때문입니다. C++은 그것을 감추지 않지만 현대 건축물은 모두이 속성을 가지고 있습니다.
오늘은 적어도 특별히 특수하게 사용 된 것처럼 보입니다 : http://stackoverflow.com/a/1962756/4342498 – NathanOliver
@krzaq 물론 FAQ입니다. 그런 식으로 유지하려고합니다 :) –
"x = 00000001 인 경우 y = 11111110?" 예. 그러나 부호있는 정수인'11111110'은 -2입니다. [2의 보수] (https://en.wikipedia.org/wiki/Two%27s_complement) – tkausl
'int'는 부호가 있습니다. 'unsigned int'와 동일하게 시도 할 수도 있습니다 – user463035818
@ black-goat : 그러나'y' **는 **'1 ... 11111110'입니다. 처음에 그게 아니라고 생각한 이유는 무엇입니까? '- (x + 1)'은'-2'이며 2의 보수 시스템에서는'1 ... 11111110 '입니다. 나는. 모든 것은 예상대로 정확하게 작동합니다. – AnT