计算机组成原理-第二章(1)-数据的表示和运算-进位计数制

计算机组成原理

此系列为王道计算机考研组成原理精细笔记


通过第一章的学习,我们知道了计算机分为五大部件并且了解了这5大部件各自的作用,有了前面的知识,我们该死的求知欲告诉我们,接下来我们需要探究的是:

(1)数据如何在计算机中表示

(2)运算器如何实现数据的算数字、逻辑运算。


第二章 数据的表示和运算

进位计数制

  这一小节我们应该学习什么是进位计数制。

  我们一般使用的是十进制数,计算机能识别的是二进制数,为了方便程序员编程,我们还会使用八进制和十六进制,这里主要能够学到其它进制转换成十进制,以及二进制、八进制、十六进制之间的互相转换,以及十进制转换成其它进制,最后还会带大家了解真值和机器数的概念。
在这里插入图片描述

最古老的计数方式

  在古代,人们会用划竖线和划横线的方式来表示摘了多少个苹果,但随着果子越摘越多,人们发现这种方式很难进行,于是就有人提出以不同的符号表示不同的数量,如使用横线表示5个,竖线表示1,八个苹果就是一根横线 + 三根竖线,这就是最原始的计数方式,不同的符号表示不同的权重。基于这样的思想发明的最著名的一种计数方式是:罗马数字。
在这里插入图片描述
  但这种单纯用符号来反映权重的计数方法显然是优缺点的,如果我们要表示的数字不断增大,那就有可能发明更多的符号,如发明10000,就用符号W表示,发明十万那还得再发明一个符号,随着人类生产活动的发展,人类想要表示的数字将越来越大,那么采用罗马数字这种方法就会越来越不方便。

在这里插入图片描述
  后来,古印度人发明了阿拉伯数字,阿拉伯数字总共有十种符号每个符号反映不同的权重,就是代表不一样的实际数值。

  另外,阿拉伯人还发明了十进制计数系统,这种计数系统除了用符号反映权重之外,还会用符号的位置反映权重如975=9 * 100+ 7 * 10 * 5 * 1,每个数字所在的位置不同,其权重也不同。这种十进制位的计数思想与罗马计数的加法思想不一样,它引入了乘法思想。

  那由每个符号它所处的这个位置不同所确定的权重权重叫做位权。由位置确定的权重称为位权。

  我们可以想一下为什么我们人类喜欢用十进制这种计数方法,这是和我们人有10根手指是有关联的,十进制就是逢十进一,人类有十根手指,可以想到逢十进一,哈哈,说个笑话,海绵宝宝有八根手指,那么它就是八进制的发明者吧。
在这里插入图片描述

R进制

  现在我们将十进制的方法推广到r进制,首先我们要引入一个概念基数。

  基数:每个数码位所用到的不同符号的个数,r进制的基数是r。

  可以这样理解,十进制每个数码位会用到的符号有10种,所以十进制的基数是10,由此可以知道r进制的基数是r。

  在古巴比伦时期,人们会用到60进制,在现代社会也经常用得到,如对时间的记录,但是我们只需要关注2,8,10,16进制。

  我们用这样一个公式来进行任意进制转换成十进制。
在这里插入图片描述
  小练习:
在这里插入图片描述
在这里插入图片描述
  十进制是我们人最熟悉的计数方式,二进制是最适合计算机存储和处理的一种计数方式。为什么呢?

(1)可以使用两个稳定状态的物理器件表示,如高低电频。
(2)0,1正好对应逻辑值假、真。方便实现逻辑运算。
(3)可很方便使用逻辑门电路实现算术运算。

  接下来我们看二进制如何和八进制、十六进制进行转换。

  接下来我们看二进制如何和八进制、十六进制进行转换。

二进制—>八进制

如:1111000010.01101

  八进制的基数为8,二进制的基数为2,如果我们把三个二进制位进行组合,那么这三个二进制位有可能出现的情况就是2 * 2 * 2 = 8种情况。

  所以我们要将二进制位转为八进制只需要3位一组,每组转换成对应的八进制符号,不足三位的用零补充,如下图:
在这里插入图片描述

二进制—>十六进制

  我们可以发现4个二进制数可以表示16种状态,所以我们可以用4位一组,每组转换成一个十六进制数即可:
在这里插入图片描述

八进制—>二进制

  如(251.5)8

  • 其中2对应的二进制是:010
    5所对应的是101
    1对应001
    所以转换为二进制为:010101001.101

  十六进制转二进制也一样:
在这里插入图片描述
  大家可以注意到:我们会用一个括号+角标表示8进制,16进制等。除此之外还有另外一种表达方式:后面加B(Binary)是二进制,H是十六进制,十进制是D,我们经常可以看到0x后面接一段数字,也表示后面跟的那一段数字是十六进制的数。

  下一个问题是我们如何将十进制转换为十六进制:

如75.3是一个十进制数我们如何将它转换为其它进制的数呢?
这需要分为整数和小数位。
整数部分:通过之前r进制和十进制的公式,我们可以知道用r进制表示其整数部分为:
在这里插入图片描述
我们对这个整数部分统一的除以一个r就是:
在这里插入图片描述
其中前面部分为商,余数为K0
所以我们用整数部分除以二进制基数,不断这样进行就能得到K0,K1,K2….
直到除数为0,这种方法叫除基取余法。
在这里插入图片描述
同样的我们要将十进制转为八进制只需要将基数改为8即可
这样整数部分的转换我们就懂了,现在我们看小数部分的转换。
我们使用小数部分乘上基数,然后取整数部分为转换进制所对的位置,进而将十进制转换为二进制,如下图:
在这里插入图片描述
我们将这种方法称为乘基取整法。
但如果我们能够熟练的记住或者在纸上提前写出每个二进制位所对应的位权是多少,我们也能用拼凑的方法将十进制位转换成二进制位。
在这里插入图片描述.不如说对于十进制:260.75这个数,整数部分250=256+4,也就是100000100,而小数部分是0.75=0.5+0.25所以小数部分为11,整个(260.75)10=100000100.11

真值和机器数

  最后我们将一下真值和机器数

  之前我们知道十进制转换为二进制,那么二进制可以很方便的保存到计算机里面,但如果这个十进制数还带正负那怎么办呢?

  通常的解决办法是我们会加一个标志位,用一个二进制位的0和1来表示正和负。
在这里插入图片描述

知识点回顾

在这里插入图片描述

总结

下一节是计算机性能指标,期待大家和我交流,留言或者私信,一起学习,一起进步!

Supongo que te gusta

Origin blog.csdn.net/CltCj/article/details/121857301
Recomendado
Clasificación