预处理指令与进制

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. 八进制 转 二进制:13

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. 十六进制 转 二进制: 14
   1f(16)--->  1    f
              0001  1111 = 11111(2)


2. 二进制 转 十六进制: 41
    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 = 80或者1
    1024byte = 1 KB
    1024KB = 1MB
    1024MB = 1GB
    1024GB = 1TB
    1024TB = 1PB

3.各种数据的字节数
    我们的编译器: 64位编译器
    short int 类型 2个字节 = 16位 = 160或者1
    int 类型  4个字节 = 32位 = 320或者1
    long int 类型  8个字节 = 64位 = 640或者1
    float 类型 4个字节 = 32位 =  320或者1
    double 类型 8个字节 = 64位 = 640或者1
    char 类型 1个字节 = 8位 = 80或者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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值