搜索
写经验 领红包

什么是Python?之 6 没有Python怎么写程序的

计算机人机交互的历史

最早的人机交互是卡带式,操作员将提前编写好的二进制代码编写到纸带(图1)上,然后再将这个纸带插入到笨重的机器(图2)中,需要等待很长时间才能得到计算机的反馈,所以总的来说,早期的人机交互就是没有交互

印有二进制代码的纸带

什么是Python?之 6 没有Python怎么写程序的

假定现在有一个CPU,其指令包括:mov,add,and,or,xor,sub,shift,load,store,halt一共10个指令,对应的值分别是二进制的 0000 到 1001同时,CPU带有8个寄存器(r),分别对应了二进制的 0000 到 0111(r0 - r7 )那么,我们来设想这样一段程序

第一步,将一个内存地址(例如 0x1a)放到寄存器0第二步,寄存器0的地址所对应的数据读取到寄存器1第三步,将另一个内存地址(例如0x2c)放到寄存器0第四步,将寄存器0的地址所对应的数据读取到寄存器2第五步,将寄存器1和寄存器2的数值相加,存储到寄存器3第六步,将第三个地址(例如0x3e)放到寄存器0第四步,将寄存器3的数值写入寄存器0所对应的地址

那么我们的基本的汇编代码看起来应该是1 load r1 [r0]3 load r2 [r0]5 mov r0 0x3e7 halt
那么我们来试着把这些翻译成二进制数值上面知道了有10个指令,同时这些指令也会带有自己的固定参数,我们以二进制每16位为一组做成编码,根据指令规范
mov: 0001 xxxx yyyy yyyyload: 1000 xxxx yyyy 0000add: 0010 xxxx yyyy zzzzstore: 1001 xxxx yyyy yyyyhalt: 0000 0000 0000 0000

其中 xxxx yyyy zzzz分别代表了代码中要写的具体数值,

于是翻译过去,就变成了1 1000 0001 0000 0000 - load r1 [r0]3 1000 0010 0000 0000 - load r2 [r0]5 0001 0000 0011 1110 - mov r0 0x3e7 0000 0000 0000 0000 - halt

于是一个汇编代码就可以简单的翻译成纯粹的二进制格式,那么现在可以说一下纸带了

纸带的每一行规定为8个孔位,可以打孔也不打,其中打孔代表1,不打代表0换而言之,纸带每一行是8个bit,两行也就是16个bit上面那段二进制的代码,以每8位一行表现到纸带上,

用 ● 表示打孔, 表示没有,那么就变成了

最后这个纸带上的孔是这样的:

○○○●○○○○ 00010000○○○●●○●○ 00011010●○○○○○○● 10000001○○○○○○○○

二进制运算规则简单

我相信大家肯定不用我废话二进制是什么,

简而言之,二进制只有0和1两个数字,且2进1。

对比下我们熟悉的十进制(即满10进1),

你可能会觉得标题有问题,明明是十进制的运算更简单。

其实不然。

我们从小学习的就是十进制,也背了n年的加减乘除运算法则,比如九九乘法表~

什么是Python?之 6 没有Python怎么写程序的

而采用二进制,乘法规则只有四种:即

0*0=01*0=01*1=00*1=0

技术上更容易实现

闭合表示1,断开表示0。

二进制的0和1正好与逻辑量的”真“和”假“相对应,所以,使用二进制来描述二值逻辑就十分自然,逻辑门电路就能够利用0和1简化运算。

逻辑门简介

逻辑门是用于实现布尔表达式(特别是二值布尔表达式)的基本电子电路。它们提供了一种基于布尔代数定律组合和处理数字信号的方法。

以下是一些用于构建数字逻辑电路的基本逻辑门。

或者 or和 and非(逆变器)缓冲与非也不异或 (XOR)异或 (XNOR)

NOT 逻辑门具有一个输入和一个输出,其实就是取反操作

如果输入为 0(低),则非门的输出为 1(高),如果输入为 1(高),非门的输出为 0(低)
flag  = Truenot_flag = not True 

not_flag就成了False其实就是取反操作

什么是Python?之 6 没有Python怎么写程序的

或门

或门是一个双输入逻辑门,

仅当两个输入均为 0(低)时,或门的输出才为 0(低)。对于输入的所有其他组合,或门的输出为 1(高)。

OR门的逻辑符号和真值表如下所示。

输入 (A)

输入 (B)

输出(Y =A+B)

0

0

0

0

1

1

1

0

1

1

1

1

>>> a =1>>> b =0>>> a or b1>>> a = 0>>> b  = 0>>> a or b0>>> a = 0>>> b = 1>>> a or b1>>> a = 1>>> b = 1>>> a or b1

什么是Python?之 6 没有Python怎么写程序的

在程序的世界里面最后逻辑运算孝是真或假,当然有个位运算其实本质也是每一位进行逻辑运算的结果