프로그래밍

 3198, 1/160 회원가입  로그인  
   benkim
   c언어 NOT 비트 연산자 질문

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=6367 [복사]


1.  int main(void)
2.  {
3.
4.  int num1 = 15;         // 00000000 00000000 00000000 00001111
5.  int num2= ~num1;
6 . printf("not 연산자 결과: %d \n", num2);
7 . return 0;
8 .
9.  }

1번에는 1111 = 15인데 NOT 연산을 하면 전부 반전시키는건데, 전부 반전을 하면
11111111 11111111 11111111 11110000인데 이걸 10진수로 보면 268435455라고 나오네요
그런데 왜 결과가 -16이에요?

  Hit : 9572     Date : 2013/07/19 09:18



    
avtree 맨 앞의 비트가 1이므로 -값으로 인식을 합니다.
그 다음에 비트를 반전시킨다음에 1을 더한값에 -를 붙인게 그 값이 됩니다.
15를 반전시킨것->다시 반전(15)->1 더함(16)->부호 반전(-16)
2013/07/20  
benkim 이해를 못하겠어요 ㅠㅠ 2013/07/20  
dontknow 6라인 printf 에서 %d 를 %u로 해보세요. 부호비트가 이해가 안된다면, unsigned와 signed의 차이를 공부하셔야 합니다 2013/07/22  
kumi123 부호비트에 대한 이해가 필요합니다..

unsigned int 로 만드시면, 원하시는 수가 나올겁니다.
2013/07/28  
HongMK900 기초적인 2진법 공부부터 하세요. 구글에서 2013/08/14