正数(符号位为0时)的补码与源码相同,负数(符号位为1时)的补码等于(2^n)-N。
原码除符号位外按位取反得到反码,反码加一得到补码。
补码减一得到反码,反码除符号位外按位取反得到原码。
//EOF:end of file#include <stdio.h>int MAX(x,y)//比较两个值大小{if (x>y)return x;elsereturn y;}int main(){int a = 10;int b = 20;int t = a && b;//1与1还是1int r = (int)3.14;//强制3.14转换为整型int z = a++;//先把a的值赋给b,然后a+1int e = ++a;//先给a+1,然后把a的值赋给eint d = 0;//4字节32bit位00000000000000000000000000000000int c = ~d;//d二进制按位取反11111111111111111111111111111111//此时c的符号位是1表示c为负数,负数在内存中存储的是二进制的补码//将补码11111111111111111111111111111111转换成反码11111111111111111111111111111110//将反码11111111111111111111111111111110转换为原码10000000000000000000000000000001//所以c是十进制数-1int u = !d;//0取反是1int max = 0;int min = 0;max = MAX(a, b);//三目运算符(条件运算符) 表达式1?表达式2:表达式3min = a < b ? a : b;//a<b成立,则min=a,否则min=bprintf("%d\n", c);//打印的是c的原码printf("a=%d z=%d e=%d\n", a,z,e);printf("%d\n", u);printf("max=%d\n",max);printf("min=%d\n",min);return 0;}
