模块化编程的概念:把功能相似的函数封装到不同的文件中。
好处:
1)用的时候,只需包含.h的文件,对外隐藏源文件的实现。
2)团队的分工协作
3)可以把细化若干个模块
实现:创建.c 的C语言源文件,.h(header)头文件(可做方法的声明)
1)方法的声明,但是不能实现方法
2)声明变量
3)声明结构体
7-5(进制)
7 6 5 4 3 2 1 0 //数位 1 0 0 0 1 1 1 1 //数码 //位权=数码值*基数^数位 (基数=几进制基数就是几) /* 10->2 除2取余,把10进制数除于2,然后取得余数序列,再倒序。 2->10 所有 位的位权相加 eg:0101=1*2^0+0*2^1+1*2^2+0*2^3 =5 2->16 4合1法,整数部分从右向左4位结合成1位,小数部分从左向右4位结合1位,不足部分高位补0 16->2 1拆4法 16进制的1位拆成二进制的4位 0x 5 2 0 a 0100 0010 0000 1010 */
7-6 源码、反码、补码
源码:一个数绝对值的二进制表示,如果是“+”,则最高位“0”;
如果是“-”,则最高位是“1”;
数据在计算机内都是以反码的形式存储的
正数:源码=反码=补码
负数:反码=除符号位以外的各位取反 (1->0, 0->1)
补码:反码+1
为什么要引入反码:
为了计算机能够做成减法,减法电路设计更简单。
7-7 位运算介绍
运算符:运算符用来连接操作数,组成有意义的式子
分类:算术 关系 逻辑 位运算
位运算:用于二进制之间的运算
1)按位与& (判断一个整数的奇偶)获取一个数的最低位,让这个数与“1”进行按位与操作,若为0则是偶数 若位1则是奇数
2)按位或 |
3)取反 ~
4)异或^
5)>>右移
6)<<左移
//按位与& 9&11 (同1则1,有0为0) 00001001 & 00001011 ----------------- 00001001 //按位或 | (有1则1,同0为0) 9|11 00001001 | 00001011 ----------------- 00001011 //~取反 (1变0,0变1) //^异或 (相同为0,不同为1)
左移<<位运算:各二进制位全部左移n位,高位丢弃,地位补0 (向左移动n位,相当于原数*2^n 左移可能改变一个数的正负性)
右移>>位运算:移出去的部分要舍弃,高位要补符号位 (右移不会改变一个数的正负性)一个数右移n位,值等于原值除于2^n,结果是整数部分
00001000 << | ---------------------- 0000100000
7-8 获取变量地址的方法
%p 输出一个地址
定义在函数中的变量我们称为局部变量。
内存分配:先分配字节地址大的内存,再分配字节地址小的内存
变量存储细节:
低位字节存放在低地址
高位字节存放在高地址
变量首地址:变量在内存中占用的存储单元中地址最小的那个地址(取地址地址)