嵌入式C语言补习2

一、gcc编译器及编译方式

1.1编译型语言

C语言的源程序—代码是给程序员去看;但是计算机只能识别01这样子的二进制数据

将.c源文件计算机能识别的二进制文件

我们linux系统中,C语言的编译器使用的是 gcc

编译器:  gcc编译器来完成这个动作。

1.2按照编译流程分步编译

                         预处理-->编译-->汇编-->链接

预处理:头文件的展开、注释的删除、宏定义的替换

               gcc -E 3.c -o 3.i

编译:词法分析、语法分析 用来查错的

如果无误,会生成汇编文件

               gcc -S 3.i -o 3.s      (大写S

汇编:将汇编文件生成二进制文件

              gcc -c 3.s -o 3.o       (小写c)

链接:链接库文件 生成最终的可执行文件

             gcc 3.o -o a.out

执行可执行文件            ./可执行文件

一步生成                       gcc 源文件.c   (默认得到的可执行文件的名字: a.out)

                                     gcc 源文件.c  -o  自定义名字

二、计算机中数据的存储

计算机中数据的存储主要分为两大部分:

              数值型数据     非数值型数据

2.1 数值型数据的表示方式

表示形式

       有4种

二进制:      组成:0~1   用b开头,               给计算机使用          例 b0100 1000       满2进1

八进制:     组成:0~7   用0开头的                写代码用的              例 076   023          满8进1

十进制:     组成:0~9                                    给人看的                 例10   120   80      满10进1

十六进制: 组成0~9       用0x或者0X开头的   写代码用的             例 0x98   0xac       满16进1

                    a~f  A-F                

  

2.1.1二进制、八进制、十六进制转十进制

二进制转十进制

       例:b101011 == 从右向左 1*2^0 + 1*2^1 + 0*2^2 + 1*2^3 + 0*2^4 + 1*2^5

                             == 1 + 2 + 0 + 8 + 0 + 32

                            == 43

       b1000 0110    == 134

八进制转十进制

           例:067     ==      6*8^1+7*8^0 

十六进制转十进制

          例:0x78    ==     7*16^1+8*16^0

2.1.2十进制转二进制、八进制、十六进制

以100为例

2.1.3八进制、十六进制和二进制之间转换

二进制和八进制之间的转换

2^3=8        3位的2进制数表示一个8进制数

0~7用2进制表示一下

          111 ---7

         110--- 6

         101----5

         100----4

         011----3

         010----2

         001----1

         000----0

二进制转八进制

        b111 101 010      ==      0752   

        b110 011 010      ==      0632   

八进制转二进制

                      0673     ==      b110 111 011      

十六进制和二进制之间的转换

依次类推:

2的4次方是16    4位的2进制数表示一个16进制数

          10000     从0~15

          1111         F

          1110        E

          1101       D

         1100        C

         1011       B

         1010       A

         1001      9

        1000       8

        0111       7

        0110       6

        0101      5

        0100      4

        0011      3

       0010       2

       0001       1

       0000       0

十六进制转二进制

        0x8ec     ===     b1000 1110 1100

        0x752    ===      b0111 0101 0010

二进制转十六进制

       b1111 0101 1010 1101====》 0xf5ad

2.2非数值型数据的表示方式

计算机中只能识别二进制的数值型数据,但是我们实际编码的过程中,

经常会出现一些非数值型的数据,如 人名 企业名 网址 等

我们也需要保存这些数据

在代码中看到的 "hello" 'm' '8' 这些都是非数值型数据

既然需要保存,科学家们就发明了一种叫做 ascii 码的东西

在linux系统中使用 man ascii 命令 就可以查看ascii码表

每个字符都对应一个整型数据,当想存储字符的时候,

本质存储的是他对应的整型数据的二进制

常见的ascii码

'0' - '9'         48-57

'A' - 'Z'        65-90

'a' - 'z'        97-122

'\0'              0

'\n'             10

单个个字符一般都是用一个单引号引起来的,单引号中只允许出现一个字符

转义字符:

所有的ascii码都可以使用一个 \+数字 (八进制) 来表示

C语言中还定义了一些 \+字母 来表写那些无法看到的字符

如 '\0' '\n' '\t' '\r' '\a' 等

这些就称之为 转义字符 因为这些字符已经不是本来的含义了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值