整体性的来看看二进制

整体性的来看看二进制

整体性的来看看二进制 一 ,二进制 常用进制有二进制,八进制,十进制,十六进制,相互之间也可以进行互相转换。日常生活中我们使用的为十进制,即用0123456789 来表示数字并计算,逢十进一,借一当十,我们都再熟悉不过了。 我们可以以此来类比其它进制,比如二进制就是只用0和1表示数字,相应的是逢二进

整体性的来看看二进制

一 ,二进制

常用进制有二进制,八进制,十进制,十六进制,相互之间也可以进行互相转换。日常生活中我们使用的为十进制,即用0123456789 来表示数字并计算,逢十进一,借一当十,我们都再熟悉不过了。

我们可以以此来类比其它进制,比如二进制就是只用0和1表示数字,相应的是逢二进一,借一当二。 八进制就是用01234567表示数字,逢八进一,借一当八。我们用0123456789ABCDE表示十六进制,A代表“10”,B代表“11” 往后类推 ... 十六进制那么就是逢十六进一,借一当十六。

我们把表示某个进制需要用的“符号”,叫作数码。

那么,二进制有什么特殊之处吗? 实际上,在我们的计算机内部,使用的就是二进制。即 0 和 1,0 和 1也只是为了表示,计算机只知道有电没电。

二,计算机与二进制

1946 年,第一台计算机诞生。它就是由宾夕法尼亚大学研发的 ENIAC,用于科学计算(计算导弹轨迹),第一台计算机还是十进制。

指令是二进制表示的命令,用于命令指挥计算机。由多个指令组成的一条指令序列,称为程序。

这第一台计算机有个最大的缺点,就是每次运行写好的程序,如果之前有其它程序,需要先卸载前面的程序。 通俗来讲,它只能安装一个程序。为了解决这个问题,参与ENIAC研发的冯诺依曼,在之后提出了 “存储程序原理”又叫“冯诺依曼原理”。 它主要解决的就是这个问题。

存储程序原理的思想包含
存储程序:将执行所需的程序以及数据存储在存储器中。
程序控制:从存储的程序中取出指令,分析指令,并执行指令。

于是基于这个原理,计算机可以存储下程序,不需要每次都卸载前面的,再装后面的程序。

这个原理也提出了,计算机硬件由输入设备,输出设备,运算器,控制器,存储器 五大类设备组成。同时提出了 计算机应采用二进制设计。

为什么是二进制? 因为二进制计算机 易于物理实现,运算规则简单,通用性强,可靠性高。 简而言之就是两个字 “简单”。

二进制中加减乘除都可以基于简单的逻辑运算而计算。
我们先不考虑进位来看二进制相加。
1+0=1,0+1=1,1+1=0,0+0=0。
发现什么规律了吗? 相同为0,不同为1,这就是逻辑运算中的异或(XOR)运算。 仅仅通过异或运算就实现了加法。 然后进位呢? 我们发现只要1+1 时需要进位,这不就对应了逻辑运算中的与运算(AND)吗?

三,二进制的表示

我们有两种方法表示某个进制的数字,有两种方式,下标法和后缀法。不标识默认为十进制。

下标法及把数字括起来,是几进制就在右下角写个几。比如(12)8。后缀法是在数字后面加一个对应进制英语的开头字母,比如100B。

二进制 - B (Binary),八进制 - O (Octal),十进制 - D (Decimal),十六进制 - H (Hex)。

如果只给一个数 16,让我们判断,我们很难判断它为几进制。 它可能是八进制,也可能是十六进制,又可能是十进制。 我们写成16H ,那就很清晰了,它是十六进制的16。

二进制可以转为十进制,基于位权展开法,乘基的n-1次方(基数)取和,小数点为0,小数点后面n为负。但是二进制并不能总是可以准确转换成十进制。

十进制也可以转换为二进制,小数点前除基取余倒排序,小数点后乘基取整正排序。

二进制也可以通过421法与八进制进行互相转换。 也能与十六进制通过8421法进行互相转换。

四,指令 机器语言 汇编语言,到高级语言

什么是指令,指令是命令计算机执行命令的二进制。 一个指令包含了 操作码,地址码。 即一个告诉计算机怎么做,一个告诉计算机去哪做。

假设一条指令
11100011 - 操作码
10111001 - 地址码

程序是指令序列,由很多指令组成。那么我们是如何制作程序,才能让计算机看懂呢?

最开始我们用的是 “机器语言”。机器语言的每条语句都是一条指令,所以很明显,机器语言编写的程序都是二进制语句。因为计算机只能读懂二进制,所以机器语言编写的程序可以直接由计算机直接执行,执行速度快。

但是缺点也很明显,难以编写,通用性和可移植性差。 难以编写很简单,我们编写个程序,还需要记住各种二进制数字对应什么意思。 那么 通用性和可移植性差呢?

其实也非常简单,计算机上指令是什么样的,用什么指令取决于每台计算机的 CPU 处理器的架构。不同计算机的指令并不一样,比如一条指令在这个计算机上是这样,那台计算机上是那样 并不通用。 在这个计算机上可以运行,但换个计算机就不一定了。

CPU 主要由运算器和控制器组成。其中运算器可以做算术运算和逻辑运算,由寄存器和算数运算单元ALU组成。 控制器则控制计算机整体的命令执行。

为了解决机器语言难以编写的问题,于是出现了汇编语言。汇编语言是符号化的机器语言,本质上还是机器语言 只不过它把每条二进制指令用符号表示。所以汇编语言的语句和二进制指令是一一对应的。 比如 MOV CL,4。 因此汇编语言也有机器语言有的问题,通用字和可移植性差。除此之外,计算机没办法看到这些符号,计算机只认二进制,所以写好的程序还需要由汇编程序翻译为机器语言来执行。

之后,为了解决这些问题,推出了高级语言,如Python,Java,C,CPP... 这些都是。 它们的优点很明显,接近自然语言,可读性强,编程效率高。 编写方式简单太多。

相应的,机器语言和汇编语言就是低级语言。

Comment