C语言学习笔记01

编程和编程语言介绍

程序和指令

​ 程序是一组或一系列指令,您将提供给计算机,计算机现在将以何种语言执行这些指令。

我给计算机提供这些指令 我可以用英语等非自然语言给出这些指令,你一定听说过计算机理解二进制 ,二进制是计算机的语言 二进制是一个只有两位数字 0和 1 的数字系统 。我们的数字系统 使用是从 0 到 9 的十位数字,我们称之为十进制数字系统,那么为什么理解二进制,或者更确切地说,为什么计算机设计会了解二进制。


原因是二进制在实际硬件中的实际物理设计中很容易模拟,计算机是一个电子设备,如果电流流过某些电路,那么在电路中创建 0 和 1 的逻辑非常容易有电流我们可以说它是1,如果电流没有流动,我们可以说它是零,如果电容器两端有一些电位差,我们可以说它是1,如果没有电位差,我们可以说它是一个0,一般来说,1可以对于存在的东西,而0可以对应于不存在的东西,一可以对应于某个条件为真,而零可以对应于该条件为假。
在这里插入图片描述

如果我们只使用一根线或一个电容器,我们可以发出信号或存储两个可能的值 0 和 1 但假设我们一起使用 2根电线或电容器,我们可以发出信号或存储可能的组合或二进制中的可能值 0 0, 0 1, 1 0 和 1 1。

在这里插入图片描述

如果你只有一个二进制数字也称为位,位您可以有 2 个可能的值,如果您有两个位,则可以有 4 个可能的值,每个位可以是 0 或 1, 1也称为设置位,零称为未设置位。
在这里插入图片描述

所以如果我们有 3 位,我们可以有 8 个可能的二进制值,这些是 8 个可能的值,其中 按十进制表示,这是 0,这是 1,这是 2,以此类推。一般来说,如果我们有 n 位我们可以有 2 的 n 次幂0和 1 的可能排列和组合 我们可以有从 0 到2 的 n 次幂-1的值 ,对于 n 等于 3我们可以有从 0 到 7 的,值对于 n等于 4 我们可以有 值从 0 到15,


计算机如何理解和执行指令

​ 指令执行所有指令的计算机的核心部分称为中央处理器或CPU 有时我们简称为处理器,它不是计算机的大机箱或盒子,现代计算机 CPU是一个非常小的集成电路,它看起来像这样。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xrcsYilA-1661252288370)(C:\Users\86131\AppData\Roaming\Typora\typora-user-images\image-20220823174712621.png)]

CPU每条指令必须是位模式,由 1 和0 组成,但一条指令不能是任何随机位模式,它必须采用某种格式,以便 CPU能够解码和执行它。为此 CPU 制定了一组规范,并且您的指令必须遵循规范例如,规范可以是任何执行算术或逻辑运算的指令必须是 20 位,假设我在这里绘制的图中的单元格是二进制数中的位位置。
现在规范可以是,这只是一个例子 在这 20位中,前四位或最左四位必须是您要执行的操作的二进制代码 我们通常为操作代码和操作编写,操作码也将被指,假设四位相加的操作码是 0 0 0 1,假设减法的操作码是 0 0 1 0 并且可以有其他操作比如比较,假设比较是 0 1 0 1 所以如果我们想要有一条指令将两个数字相加,这四位必须是 0 0 0 1,假设规范的其余部分是接下来的 8 位必须是第一个操作数,您执行操作的数字称为操作数。接下来的 8 位可以 作为第二个操作数,假设您希望指令添加数字 4 和 5,然后二进制中的 4 为1 0 0 其余这些位将为 0,二进制中的 5 为 1 0 1 其余这些位将为零,所以你在20 位中所拥有的是根据我选择的示例规范。数字 4 和 5 的相加的指令。

在这里插入图片描述

​ 这是机器实际理解并执行二进制指令的语言。并按照一定的规范以二进制执行的指令的语言。

电路中的某些物理设计,我们不需要深入了解这些细节,这样的二进制指令通常称为机器语言。

因为它可以由机器或更具体地说CPU 解释和执行, CPU 可以具有完全不同的架构和完全不同的指令规范,因此

一种 CPU 架构的机器语言指令可能不适用于另一种CPU 架构 曾经有一段时间,程序实际上是用机器语言编写的,

这是一个非常乏味且容易出错的过程 关于它,您将经常需要查看用于各种操作和命令的二进制代码的规范该程序将不是人类可读的 您将无法仅通过查看程序来弄清楚逻辑 随着汇编语言的发展而得到了一些改进在汇编语言中,我们可以拥有更人性化的可读性。


机器语言指令的表示,例如,如果这是具有一个操作码和两个操作数的机器语言指令,那么在汇编语言中,可以

以更易读的形式编写相同的指令,我们可以为操作码编写一些关键字,例如,如果这是操作码 对于加法,

我们可以写加法,然后我们可以用十进制操作数写操作数和常量,操作数 1 是 4,操作数 2 是5 可以用汇编语言编写这样的指令add 4 5指令。

在这里插入图片描述

低级语言和高级语言

CPU 只能理解机器语言指令,所以我们如何用汇编语言编写程序可以用汇编语言编写你的逻辑,然后你可以将汇编语言指令传递给一个名为 汇编器( assembler)的程序,这个将生成与汇编语言指令相对应的机器语言指令。但是汇编语言存在问题,汇编语言强烈映射到机器 语言,只是机器语言中的一些二进制代码成为汇编语言中的关键字,所以就像机器语言一样,汇编语言指令也会因一种 CPU 架构而异,所以如果您尝试将汇编语言代码从一种架构移植到另一种架构,那么 同一程序可能不能运行,您可能必须根据一组新的规范重写您的程序。
因此汇编和机器语言都特定于机器的体系结构,这些语言的指令取决于机器的体系结构,或者更具体地说,取决于 CPU 的体系结构被称为低级语言需要不特定于机器架构的编程语言 这种编程语言被称为高级语言。

​ 高级语言应该有更多的自然语言元素,它应该使生活 程序员的工作要容易得多,因为他不必关心机器的所有详细的低级规范,现在让我们来谈谈高级语言。高级语言为您提供机器架构的抽象。到目前为止出来这么多高级语言。我们有 C,C++,我们有 Java,我们有 Python,还有一些像 Fortran basic 这样的旧语言,Fortran 是 IBM 现在开发的第一个高级语言,即使使用高级语言,我们也不能跳过基本规则,即最终将要执行的指令必须是机器语言

编译器和解释器

高级语言有两种可能的执行模型一些语言被称为编译语言对于这些语言 我们会有一个程序,我们称之为编译器 。编译器对于不同的语言会有所不同对于不同的机器架构,编译器也会有所不同,我们通常说它需要您用高级语言编写的源代码并生成可以由 CPU 直接执行的机器代码指令集。 C是编译语言的示例,它通常的工作方式是向编译器提供一个文件或一组文件。你的程序假设 app.c是将包含你的程序的文件在 C 中编译器将生成另一个可以在机器上执行的文件假设它将创建类似 app.exe。exe文件是Windows机器上的可执行文件。从用高级语言编写的源代码生成可执行文件的过程称为编译 基本上编译器执行编译。

在这里插入图片描述

高级语言还有另一种执行模型一些语言被称为解释语言对于解释语言我们需要使用程序与编译器不同,我们称之为解释器,解释器不生成可以单独执行的可执行代码解释器获取高级语言的源代码分析并在其内部运行不创建可执行文件程序在解释器中执行我们不会去 详细了解它是如何发生的。python 是一种解释行性语言,理论上任何语言都可以编译或解释,但实际上语言属于这些类别之一,要么是编译要么是解释,所以有这么多高级语言,我们说我们将首先通过C学习编程为什么有这么多语言,哪种语言好实际上没有好或坏的语言有些语言是为了克服以前语言的限制,而编写的有些语言是为了使某些任务更容易而编写的,但是在这样的基本结构和原语中是相同的 大多数语言以及你可以用一种语言做的事情可以用另一种语言完成如果有人非常了解其中一种编程语言,那么他很容易选择另一种编程语言。


C语言介绍

C是一种通用的、过程式编程编程语言,支持结构化编程、词法作用域和递归,使用静态类型系统,并且广泛用于系统软件应用软件的开发。

C语言于1969年至1973年间,为了移植与开发UNIX操作系统,由丹尼斯·里奇肯·汤普逊,以B语言为基础,在贝尔实验室设计、开发出来。二十世纪八十年代,C语言应用日渐广泛。为了避免各开发厂商用的C语言的语法产生差异,美国国家标准局为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言的标准。与此同时,国际标准化组织也接受该标准为国际标准。因此,ANSI C也同时被称为ISO C。二十世纪八十年代至今的有关程序开发工具,一般都支持符合ANSI C的语法。

C语言具有高效、灵活、功能丰富、表达力强和较高的可移植性等特点,在程序设计中备受青睐,成为最近25年使用最为广泛的编程语言[2]。目前,C语言编译器普遍存在于各种不同的操作系统中,例如Microsoft WindowsmacOSLinuxUnix等。C语言的设计影响了众多后来的编程语言,例如C++Objective-CJavaC#等。现行的许多软件都是由C语言或者其影响和派生的编程语言开发出来的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值