嵌入式基础1

一.GCC编译器的介绍和使用

(1)介绍

GCC它是由GNU开发的编程语言编译器。它是GNU Compiler Collection的缩写。可以用来编译C,C++,Object-C等多种语言。

(2)安装和使用

安装

sudo apt-get install gcc

使用

<1>方法1:使用系统生成的可执行文件

gcc helloworld.c 系统默认会在当前目录下,生成一个叫做a.out的文件.【all out】

./a.out 执行a.out文件,输出对应的结果.

<2>方法2:用户自定义可执行文件

gcc helloworld.c -o helloworld 编译代码,用户自定义生成的可执行文件名称。

./helloworld 执行./helloworld文件,输出对应的结果.

或者

(3)gcc编译流程

预处理---->对源程序进行预处理生成 xx.i

gcc -E xx.c -o xx.i

编译---->把预处理过的代码生成汇编代码 xx.s

gcc -S xx.i -o xx.s

汇编---->把汇编代码生成目标文件 xx.o

gcc -c xx.s -o xx.o

链接---->把目标文件生成

gcc xx.o -o xx

参数说明:

-E 使编译器在预处理结束的时候停止

-S 使编译器在编译结束的时候停止

-c 使编译器在汇编结束的时候停止

-o 输出gcc编译的结果

(4).查看 gcc 的版本号

gcc --version

二.进制

在计算机中以01进行计算,

(1)十进制

(2)二进制

(3)八进制

(4)十六进制

2.进制之间的转换

vsp 左右分屏

sp 上下分屏

二. 数制之间的转换

1. 其他进制到十进制
2.十进制到其他进制

1)整数部分的转换

除基取余法:用我们的十进制数去除以我们目标的基数,第一次相除所得余数为 目的数的最低位,将所得商再除以基数,反复执行上述过程, 直到商为"0" ,所得余数为目的数的最高位

2)小数部分的转换

乘基取整法 :用小数乘以目标数值的基数,第一次相乘结果的整数部分为 目的数的最高位 ,将其小数部分再乘基数依次记下整数部分,反复进行下去,直到小数部分为"0",或满足要求的精度为止。

3.二进制、八进制、十六进制之间的转换

一个八进制可以转换为三个二进制数。 一个十六进制数可以转换为四个二进制数

1)八进制向二进制转换

2)十六进制向二进制转换

三. 原码、反码和补码

原码:

原码就是加了一位符号位的二进制数,正数符号位为0,负数符号位为1,符号位为最高位。

反码:

将原码的符号位不变,其它位依次按位取反

补码:

反码+1得到补码

四. C语言中的常量

整型常量:100,200,300,400,128

浮点型常量(小数); 12.5,3.14,11.11

字符串常量 :以""引起来,等价于多个字符的结合 + '\0',其中'\0'叫做字符串结尾标识。

"hello "<===>'h' + ' e ' + 'l' + 'l' + ' o ' + '\0'

"123"

"23.87"

标识符常量(宏定义);用宏名来代替某些常量数据,在某些特殊的场合可以提高程序的可读性。宏名常大写

#define MAX 100

#define PI 3.1415

在C语言中,每个字符都有一个对应的ascii的整数值。

一个字符常量占1byte。 1字节(byte) = 8个二进制位(bit)

五. 打印函数

1.C语言代码的基本框架

cs 复制代码
#include <stdio.h>  //头文件

int main() {    //主函数

        //代码

        return 0;//结束函数运行

}

2. C语言中的输出函数

printf函数

printf(" 格式控制串+字符串 ", 参数1, 参数2...);

功能: 向屏幕上输出双引号中的内容,""中字符串原样输出,格式控制串会被后面的参数给替换掉参数的个数由格式控制串的个数来决定.

说明<1>C语言中的头文件可以在 /usr/include 目录找到

<3>让vim支持中文

解决Linux下vim中文乱码的问题 解决Linux下vim中文乱码的问题

1 》 使用 sudo vim/etc/vim/vimrc) 文件 1》 使用 sudo vim /etc/vim/vimrc 文件

2》在最后加入下列内容

set fileencodings=utf-8,gb2312,gbk,gb18030

set termencoding= utf-8 set termencoding=utf-8

set encoding=utf-8

相关推荐
学逆向的1 小时前
C++ 别名命名空间
开发语言·c++·网络安全
唐青枫1 小时前
C 语言 calloc() 详解:零初始化、动态数组与内存管理实战
c语言
David猪大卫1 小时前
【C++修炼】STL容器—stack与queue
c语言·开发语言·数据结构·c++·经验分享·笔记·学习
瑶池酒剑仙1 小时前
C++变量初始化五法完全指南:默认/拷贝/直接/列表/值初始化与窄化转换陷阱(青云之志)
c语言·开发语言·数据结构·c++·算法·visual studio
raindayinrain1 小时前
c++对象模型--指针
开发语言·c++
流年如夢2 小时前
stack和queue_介绍、用法及模拟实现
c++·stl·queue·stack·priority_queue
chenbingjie_c2 小时前
C++ 模板进阶:从 “会用“ 到 “懂底层“(非类型参数・特化・分离式编译)
c++·后端
world78112262 小时前
【C++】set 和 map
java·前端·c++·set·map
lunar_coder3 小时前
哈希扩展 -- 位图思想
c++·算法·哈希算法