프로그래밍

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

http://www.hackerschool.org/HS_Boards/zboard.php?id=QNA_programming&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 : 5021     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  
  c언어 NOT 비트 연산자 질문[5]     benkim
07/19 5020
5   c언어어 질문[2]     benkim
06/23 2346
4   C언어 보수 [3]     benkim
06/10 2996
3   c언어 질문[4]     benkim
06/09 1932
2   문제 검사 해주세요 ㅠ[5]     benkim
06/09 2300
1   자바 GUI 책 추천[1]     benkim
05/16 2901
1 ...[계속 검색]

Copyright 1999-2021 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org & Wowhacker.com