TengGeGe

逆水行舟


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 日程表

  • 搜索

浮点数在计算机中的存储

发表于 2019-08-17 分类于 学习笔记
本文字数: 阅读时长 ≈

1、浮点数的计算精度问题

先进行一个小实验。以python语言为例,打开python的命令行工具ipython,并在其中输入一个带小说的表达式,观察输出的结果。你会发现输出的结果与我们预期的计算结果0有着很大差别。

In [1]: 0.9-0.3*3
Out[1]: 1.1102230246251565e-16

造成这一结果的原因是,我们计算机是二进制的形式来存储数据的,而99%的浮点数都无法用二进制精确表示。因此在上面的例子中输入的几个浮点数,在计算机中都是以近似值的形式存储,用多个近似值进行计算的时候,就出现精度丢失的问题,导致我们看到的结果与预期输出有着很大差异。

阅读全文 »

编译器的工作原理

发表于 2019-08-11 分类于 学习笔记
本文字数: 阅读时长 ≈

1、编译器是什么?

我们通常用各种程序设计语言去描述计算机的一段计算过程,计算机上的所有运行的软件都是用某种程序设计语言编写,但是这些语言只有被转换成机器码的形式才能 最终被计算机识别并执行。完成这项翻译工作的软件系统被称为编译器(compiler)。

简单地说,一个编译器就是一个程序,它可以阅读某一种(源语言)编写地程序,并将该程序翻译成一个等价地、用另一种语言(目标语言)编写的程序,翻译过程最重要的任务之一就是发现源程序中的错误。

解释器(interpreter)是另外一种语言处理器,它并不通过翻译的形式生成目标程序,从用户的角度看,解释器逐行解释用户的输入源程序,并输出源程序中指定的操作指令。由编译器生成的机器语言目标程序是可以直接被计算机识别的,执行起来通常比解释器快很多。

阅读全文 »

代码是如何在CPU中执行起来的

发表于 2019-08-10 更新于 2019-08-11 分类于 学习笔记
本文字数: 阅读时长 ≈

1、编译型语言跟解释型语言的区别

计算机是不能够识别高级语言的,所以当我们运行一个高级语言程序的时候,就需要一个“翻译机”来从事把高级语言转变成计算机能读懂的机器语言的过程。这个过程分成两类,第一种是编译,第二种是解释。
编译型语言在程序执行之前,先会通过编译器对程序执行一个编译的过程,把程序转变成机器语言,然后通过链接器对不同文件编译后的文件进行链接,形成一个完整的二进制可执行文件。运行时就不需要翻译,而直接执行就可以了,最典型的例子就是C语言。解释型语言就没有这个编译的过程,而是在程序运行的时候,通过解释器对程序逐行作出解释,然后直接运行,最典型的例子是Ruby,因为编译型语言在程序运行之前就已经对程序做出了“翻译”,运行时就少掉了“翻译”的过程,所以效率比较高。然而,编译型语言的执行依赖于平台,生成的可执行文件不能在其他平台运行,跨平台的性较差。

阅读全文 »

Wu Teng

3 日志
1 分类
1 标签
GitHub E-Mail 微博
© 2019 Wu Teng | |
本站总访问量 次 | 有人看过我的博客啦