多文件开发 按位运算符 预处理指令 进制等

day 09 多文件 位运算

预处理指令

  • * 什么叫预处理指令*
    • 这一段代码面前 如果有以“#” 开头
  • * 手写一个C程序的步骤(面试题)*

    • 创建文件,写代码
    • 编译
      • 执行main.c中的预处理指令
      • 检查语法
      • 编译生成一个.o目标文件
    • 链接
      • 为 .o文件添加一些启动代码
      • 为 .o文件链接上一个必须要的库文件
    • 执行 .out 文件
  • * 预处理指令的分类(面试题)以”#”开头*

    • 文件包含指令 #include
    • 宏定义 #define
    • 条件编译 # if #enfif
  • 预处理指令的特点
    • 都是以# 开头
    • 后面没有分号
    • 在编译的时候, 检查语法之前进行

多文件开发

  • C语言中的模块:
    • 组成:一个.h文件 和一个.c文件组成在一起的就叫做一个模块
  • 什么时候需要多文件开发
    • 当一个文件中函数过多的时候
  • 如何分模块开发?
    • 提供两个文件
      • .h文件:学函数的声明
      • .c文件: 学函数的实现
    • 如果想要用某一个模块中的函数
    • 直接引入 这个密会的.h文件就可以了
  • * 注意*
    • 在C语言中 一个模块有 .h和.c文件组成
    • 在OC中 一个模块有 .h 和 .m 文件组成
  • 创建.h和.c文件快捷键是: command + n
    • 可以同时生成一个 .h 和一个 .c 文件
  • 写模块
    • 把函数的声明写在 .h 文件中
    • 吧函数的实现写在 .c 文件中
    • 在main函数调用的时候,只需要#include “.h文件”
    • 就可以直接调用了

C语言的进制

  • C语言中如何写一个不同进制的数据
进制写法解释输出方式
二进制以 0b 开头逢二进一
八进制以 0 开头逢八进一%o
十进制编译器默认逢十进一%d
十六进制以 0x 开头逢十六进一%x

* 四个概念
* 数码:
* 数据中每一位的数字
* 数位
* 数码在这个数据中的位置 从右(0开始)到左一次增加
* 基数
* 每一个数码 可以有多种不同的表示,即 进制
* 位权
* 数码 * 基数 的数位次方

进制的转换大总结

进制转换方向转换方法理解
2一>10按位权相加从最后一位数 1-2-4-8类推,是0则跳过1则相加
10一>2按位权展开一个整数一直除2 直到得0位置 然后余数逆序输出
8一>10按位权展开相加176(8进制): 1 × 8 ^ 2 + 7 × 8 ^1 + 6 × 8^0 = 64 + 56 + 6 = 126(10进制)
10一>8除8取余除8取余倒叙排列
8一>21拆3将每一个数拆分成三个二进制数
2一>83合1每三个二进制组合成一个8进制
16一>21拆4将每一个数拆分成四个二进制数
2一>164合1每四个二进制组合成一个16进制
  • sizeof运算符的作用?

    • 作用:计算当前系统和编译器下 常量,变量在当前系统上内存中所占的字节数
  • 怎么用

    • sizeof(数据类型/变量名/常量)
  • 注意:

    • sizeof(字符型变量): 1个字节
    • sizeof(字符型常量): 4个字节

原码 反码 补码

  • 正数的原码反码补码都是一样的
  • 负数:
    • 原码: 二进制数 最高位是1
    • 反码 符号位不变 其他位取反
    • 补码 反码+1

按位与运算
1. 只要是按位运算:都需要转成二进制的补码形式进行计算

  1. 如果对应位都是1 那么结果是1
    如果对应位不都是1 那么结果是0
    口诀:同1则1,有0则0

按位或运算

  1. 只要是按位运算:都需要转成二进制的补码形式进行计算

  2. 口诀:有1则1,同0则0

按位取反运算
1. 只要是按位运算:都需要转成二进制的补码形式进行计算

  1. 口诀:
    0变1 1变0

按位异或运算
1. 只要是按位运算:都需要转成二进制的补码形式进行计算

  1. 口诀:
    相同为0 不同为1
交换2个数:
int a = 10;
int b = 20;


方法一:
int temp = a;
a = b;
b = temp;

方法二:

a = a+b;//a = 30 b = 20
b = a-b;//a = 30,b = 10
a = a-b;//a = 20,b = 10
方法三:

a = a ^ b;
b = a ^ b;
a = a ^ b;

按位左移或右移
1. 只要是按位运算:都需要转成二进制的补码形式进行计算

  1. 按位左移:

    1. 口诀:高位溢出舍弃,低位补0
    2. 8<<2: 相当于 8 * (2的2次方)
  2. 按位右移:

    1. 口诀:低位溢出舍弃,高位补符号位
    2. 16 >> 3:相当于 16 / (2的三次方)
    3. 150 >>2: 相当于150 / (2的2次方)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值