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

来源:互联网 发布:淘宝哪个店有原味丝袜 编辑:程序博客网 时间:2024/06/06 00:26

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一>2 1拆3 将每一个数拆分成三个二进制数 2一>8 3合1 每三个二进制组合成一个8进制 16一>2 1拆4 将每一个数拆分成四个二进制数 2一>16 4合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 = 20b = a-b;//a = 30,b = 10a = 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 0
原创粉丝点击