正数(符号位为0时)的补码与源码相同,负数(符号位为1时)的补码等于(2^n)-N。
    原码除符号位外按位取反得到反码,反码加一得到补码。
    补码减一得到反码,反码除符号位外按位取反得到原码。

    1. //EOF:end of file
    2. #include <stdio.h>
    3. int MAX(x,y)//比较两个值大小
    4. {
    5. if (x>y)
    6. return x;
    7. else
    8. return y;
    9. }
    10. int main()
    11. {
    12. int a = 10;
    13. int b = 20;
    14. int t = a && b;//1与1还是1
    15. int r = (int)3.14;//强制3.14转换为整型
    16. int z = a++;//先把a的值赋给b,然后a+1
    17. int e = ++a;//先给a+1,然后把a的值赋给e
    18. int d = 0;//4字节32bit位00000000000000000000000000000000
    19. int c = ~d;//d二进制按位取反11111111111111111111111111111111
    20. //此时c的符号位是1表示c为负数,负数在内存中存储的是二进制的补码
    21. //将补码11111111111111111111111111111111转换成反码11111111111111111111111111111110
    22. //将反码11111111111111111111111111111110转换为原码10000000000000000000000000000001
    23. //所以c是十进制数-1
    24. int u = !d;//0取反是1
    25. int max = 0;
    26. int min = 0;
    27. max = MAX(a, b);
    28. //三目运算符(条件运算符) 表达式1?表达式2:表达式3
    29. min = a < b ? a : b;//a<b成立,则min=a,否则min=b
    30. printf("%d\n", c);//打印的是c的原码
    31. printf("a=%d z=%d e=%d\n", a,z,e);
    32. printf("%d\n", u);
    33. printf("max=%d\n",max);
    34. printf("min=%d\n",min);
    35. return 0;
    36. }