对负数取非

首先计算机存储的是补码,对于负的数是取反加一
按字节算
5 00001001
取反 11110110
加一 11110111
然后进行非运算就是再取反得00001000,也就是4

注意:在C语言中对-1的非是0,并不是正数

  1. #include <stdio.h>
  2. int main()
  3. {
  4. /*
  5. * 注意:在C语言中对-1的非是0,并不是正数,C语言对非零数取非都是0
  6. */
  7. int a = -1;
  8. printf("a = %d\n", a);
  9. printf("!a = %d\n", !a);
  10. a = -10;
  11. printf("a = %d\n", a);
  12. printf("!a = %d\n", !a);
  13. return 0;
  14. }
  1. a = -1
  2. !a = 0
  3. a = -10
  4. !a = 0