프로그래밍 & 코딩 | 구독자 30명 | 식봉이는 식봉해

C에서 음수문제

계속 죄송합니다. 코드블럭으로 C를 독학하고 있는 잼민입니다.


음수를 만드는 법을 배우는데 비트연산자 중 부정(~)를 앞에 붙이면 음수가 된다고 배웠습니다.


제가 재대로 이해한 것인지 모르겠지만


논리부정이 아니라 비트의 부정이라면 예를 들어


0100.0000 의 비트부정은


1011.1111 이런 식으로 되는걸로 이해했습니다.


그래서 가장 크기가 작은 char를 사용해서(어차피 지난번에 char던 int던 저장은 숫자로 되고 표현만 어떻게 하느냐에 따라 숫자도 되고 문자도 되는걸 확인했습니다.)



char Ch=65;

printf("%d", ~Ch+1);


했습니다. -65가 나오더군요.


그런데  127까지는 -127 나오다가 128로 넘어가니 그냥 128이 됩니다.


게다가 128이 넘어가니 거꾸로 숫자가 줄어들더군요. 음수 부호도 붙지 않고.


저는 unsigned int와 그냥 int의 양수에서의 범위 차이가 2배인 것이 저렇게 음수 때문이라고 생각합니다만.


128이 음수변한 안 되는 것과 +1을 해주는 이유는 잘 모르겠습니다.  






로그인하고 댓글 작성하기
루리웹 오른쪽
루리웹 유머
루리웹 뉴스 베스트
PC/온라인
비디오/콘솔
모바일

루리웹 유저정보 베스트