~(NOT)연산자 질문이요!
텐시
2023.04.01
#include stdio.h
int main(void){int a=15; //00000000 00000000 00000000 00001111int b=~a; // 11111111 11111111 11111111 11110000
//계산을 위해서 b를 다시//00000000 00000000 00000000 00001111//로 바꿔주고 +1해준뒤 -를 붙인다
printf(not연산자 결과 :%d,b);
}
이경우일때 a는 00000000 00000000 00000000 00001111인데요a를 ~(not)해줬으니 10진법 계산처럼한다면 -15가 나와야하지만결론적으로는 -16이 나오잖아요?
왜 -16이 나왔는지 계산을하다보면 마지막에 -를 +로 바꿔줘야하기때문에 +1을 더해줘서결론적으로 -16이 나오지만 상식적으로 +15의숫자를 not(반대로)바꾸면 -15인데+1을 더해주기때문에 답이바뀐다는게 이상하네요사실 그냥그러러니하면되는데 왜이렇게될까 하고 궁금해서요답변부탁드려요 ㅠㅠ