一、写出下列数据的原、反和补码。
-75:
原码:1100 1011
反码:1011 0100
补码:1011 0101
-96:
原码:1110 0000
反码:1001 1111
补码:1010 0000
-34:
原码:1010 0010
反码:1101 1101
补码:1101 1110
-123:
原码:1111 1011
反码:1000 0100
补码:1000 0101
二、整理思维导图
day2.pdf
三、分步编译第一个C程序
分布编译可分为四步:预处理----->编译----->汇编----->链接
预处理:展开头文件,替换宏定义,删除注释,不检查语法错误,生成一个编译文件
gcc -E hello.c -o hello.i
编译:检查语法错误,生成汇编文件
gcc -S hello.i -o hello.s
汇编:将汇编文件生成一个二进制文件
gcc -c hello.c -o hello.o
链接:链接到程序需要的库文件,生成可执行文件
gcc hello.o -o hello
四、整理课上宏定义部分代码
宏定义中的宏替换为无脑替换,不会考虑代码的逻辑,需要自己注意.
注:可以在定义时加上括号将代码逻辑形成自己想要的逻辑.
1、求下面宏替换的结果:
#define M 4
#define N M+4*3
#define NUM M*N/4+1
4*4+4*3/4+1 = 20
2、求宏替换NUM 的结果
#define M 10
#define N M+7
#define NUM M+N*N/M+7
10+10+7*10+7/10+7 = 97
3、使用带参宏实现简易计算器,+、-、*、/、%
#include<stdio.h>
#define ADD(a,b) a+b
#define SUB(a,b) a-b
#define MUL(a,b) a*b
#define DIV(a,b) a/b
#define SUR(a,b) a%bint main(int argc, const char *argv[])
{
printf("%d\n",ADD(2,6));
printf("%d\n",SUB(4,1));
printf("%d\n",MUL(4,2));
printf("%f\n",(double)DIV(4,2));
printf("%d\n",SUR(4,2));return 0;
}