IOS学习第9天
预处理指令
- 分类
1>文件包含指令 #include
2>宏定义 #define
3>条件编译 #if #endif
- 特点
1>都是以#开头
2>后面没有分号
3>在编译的时候,检查语法之前进行
* C语言中凡是以”#”开头的就是 预处理指令*
文件包含指令的基本使用
作用
将指定文件的内容,拷贝到制定的位置,替换这一行预处理指令
语法
#include "文件路径"
#include <文件路径>
- 使用
#include "/Users/ios_beijing_15/Desktop/1.txt"
```
###相对路径和绝对路径
1.绝对路径:从根目录开始
2.相对路径:和当前的文件,删除共同的部分,剩余的就是相对路径
**#include "文件名路径"用于包含自己定义的文件**
**#include <文件路径>用于包含系统的文件**
**#include "用户自己定义的文件"从当前文件夹开始--->xcode包含目录--->系统包含目录去搜索-->没有就报错**
**#include <系统的文件>xcode包含目录--->系统包含目录去搜索--->->没有就报错**
###多文件开发
1.C语言中的模块:
组成: 一个.h文件 和 一个.c 组成在一起 就叫做一个模块
2.什么时候需要多文件开发(分模块开发)
当一个文件中的函数多过
3.如何分模块开发?
1)提供两个文件
1>.h文件:写函数的声明
2>.c文件:写函数现实
2)如果想要用某一个模块中的函数
直接引入 这个模块的.h文件就可以
“注意:
在C语言中 一个模块 由 .h和.c文件组成
而在OC语言中 一个模块 由 .h和.m文件组成
###C语言识别的四种进制
1.进制是什么?
.人们规定的一种计数方法
.几进制就表示每一位上的数,逢几进一位
2.C语言中如何写一个不同进制数据?
二进制就是逢二进一(以0b 开头),
八进制是逢八进一(以0 开头),
十进制是逢十进一(直接写) ,
十六进制是逢十六进一(以0x 开头)
3.如何 以8进制输出一个整数
用占位符%o 可以将一个整数 以8进制输出
用占位符%x 可以将一个整数 以16进制输出
用占位符%d 可以将一个整数 以10进制输出
“`
1.数码: 数据中每一位的数字
2.数位: 数码在这个数据中的位置 从右(0开始)到左依次增加
3.基数:每一个数码 可以有多少种不同的表示,即 进制
4.位权: 数码 * 基数 的 数位次方
进制转换
1.2进制 转 10进制
2---->10进制: 按位权展开相加
1011011: 1 * 2^ 6 + 0 + 1*2^4+1*2^3 +1 * 2^1 + 1* 2^0
= 64 + 16 + 8 + 2 + 1 = 91
2.10进制 转 2进制
10--->2进制:除2取余 倒序排列
179(10进制): 10110011
#pragma mark - 11 [了解]八进制 -->十进制
1. 8进制 转 10进制
8--->10进制:按位权展开相加
176(8进制):1* 8 ^ 2 + 7 * 8 ^1 + 6 * 8^0
= 64 + 56 + 6 = 126(10进制)
2.10进制 转 8进制
10--->8进制:除8取余 倒序排列
126(10进制)---> 176(8进制)
#pragma mark - 12 [了解]八进制 -->二进制
1. 八进制 转 二进制:1拆3
176 : 1 7 6
001 111 110 = 001 111 110(2进制)
2. 二进制 转 8进制 : 3合一
001 111 110(2)-->8进制
1 7 6 = 176(8)
#pragma mark - 13 [了解]十六进制 -->二进制
1. 十六进制 转 二进制: 1拆4
1f(16)---> 1 f
0001 1111 = 11111(2)
2. 二进制 转 十六进制: 4合1
0001 1111(2) = 1f(16)
总结:
10进制 转成 其他进制
->10除以进制数,取余,倒序排列
其他进制 转成 10进制
->按位权展开相加
2--->8:3合一
2--->16:4合一
8---->2:1拆3
16--->2:1拆4
8进制 和 16进制 之间没有公式 可以一次转成
->只能通过中间进制: 比如说 把8进制 先转成 2进制 再转成16进制
内存的构造和变量占用的字节数
1.二进制位:内存中表示一个0或者1的单元 bit
2.内存的最小基本单位:字节 byte
1byte = 8bit = 8个0或者1
1024byte = 1 KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB
1024TB = 1PB
3.各种数据的字节数
我们的编译器: 64位编译器
short int 类型 2个字节 = 16位 = 16个0或者1
int 类型 4个字节 = 32位 = 32个0或者1
long int 类型 8个字节 = 64位 = 64个0或者1
float 类型 4个字节 = 32位 = 32个0或者1
double 类型 8个字节 = 64位 = 64个0或者1
char 类型 1个字节 = 8位 = 8个0或者1
```
###按位与运算
1.只要是按位运算:都需要转成二进制的补码形式进行计算
2.如果对应位都是1 那么结果是1
如果对应位不都是1 那么结果是0
口诀:同1则1,有0则0
“`
按位或运算
1.只要是按位运算:都需要转成二进制的补码形式进行计算
2.口诀:有1则1,同0则0
例如:
9|13:
9的补码: 00000000 00000000 00000000 00001001
|
13的补码:00000000 00000000 00000000 00001101
--------------------------------------------
00000000 00000000 00000000 00001101
按位取反运算
1.只要是按位运算:都需要转成二进制的补码形式进行计算
2.口诀:
0变1 1变0
-3:
-3的原码: 10000000 00000000 00000000 00000011
-3的反码: 11111111 11111111 11111111 11111100
-3的补码: 11111111 11111111 11111111 11111101
~取反
-------------------------------------
00000000 00000000 00000000 00000010
```
###按位异或
1.只要是按位运算:都需要转成二进制的补码形式进行计算
2.口诀:
相同为0 不同为1
“`
按位左移或右移
“`
1.只要是按位运算:都需要转成二进制的补码形式进行计算
2.按位左移:
口诀:高位溢出舍弃,低位补0
8<<2: 相当于 8 * (2的2次方)
3.按位右移:
口诀:低位溢出舍弃,高位补符号位
16 >> 3:相当于 16 / (2的三次方)
150 >>2: 相当于150 / (2的2次方)
```
科学计数法
120.56 = 1.2056e2
0.05 = 5e-2
50.56 = 5.056e1