预处理:宏定义展开、头文件展开、条件编译等,同时将代码中的注释删除,这里并不会检查语法
gcc -E hello.c -o hello.i编译:检查语法,将预处理后文件编译生成汇编文件
gcc -S hello.i -o hello.s汇编:将汇编文件生成目标文件(二进制文件)
gcc -c hello.s -o hello.o链接:C语言写的程序是需要依赖各种库的,所以编译之后还需要把库链接到最终的可执行程序中去
gcc hello.o -o hello_elf源码
最高位作为符号位,0表示正,1表示负其他数值部分就是数值本身绝对值的二进制数负数的源码实在其绝对值的基础上,最高位变为1反码
对于正数,原码反码补码相同对于负数,符号位不变,其他部分取反补码
对于正数,原码反码补码相同对于负数,其补码为它的反码加一补码符号位不动,其他位取反,最后整个书加一,得到原码在计算机系统中,数值一律用补码来存储 主要原因是:
统一了零的编码将符号位和其他位统一处理将减法运算转变为加法运算两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃