计算机为什么使用二进制

一、为什么计算机使用二进制?

其实也可以使用十进制,但是使用二进制的计算机更容易制造。就像铜比铝导电性好,但是电子产品还是大量使用铝,因为铜储量少更贵。

二、那为什么使用二进制的计算机更容易制造呢?

因为二进制只有1和0,正好对应真值和假值,10和真假可以相互转化,所以二进制的算术运算就能转化成逻辑运算,而逻辑运算的电路比算术运算的电路更容易设计和制造,真值和假值正好对应电子器件的两种状态,比如电路的导通和断开、晶体管的导通和断开、磁原件的正负剩磁、电位的高低等。

三、那如何制作逻辑电路?

(一)使用什么东西制作逻辑电路?

我们使用晶体管制作基本逻辑电路。

1948年贝尔实验室的肖克利等人发明了晶体管。
晶体管泛指半导体电子元件。晶体管有很多种类型,包括二极管、三极管、场效应管,每种类型又分为NPN型和PNP型。
在这里插入图片描述

晶体管就是个开关,它可以打开和关闭电流。
晶体管电路有导通和断开两种状态,这两种状态就可以作为“二进制”的基础。
下面我们讲解一下PNP型晶体管,当b处电压>e处电压时,晶体管中c极和e极断开;当b处电压<e处电压时,晶体管中c极和e极导通。又因为c和e处的电压不变,所以晶体管c和e的导通与断开可以通过b极电压高低来控制,这高电平或者低电平状态正好对应二进制。也就是说b极是一个输入量,可以有两个数值:高电平或低电平;相应的输出值就是电路实际的变化:导通或断开。
PNP型晶体管,高电平断开,低电平导通。假如此时,我们把高电平作为“1”,低电平作为“0”。那么b极输入1,就会导致电路断开,如果这个电路是控制计算机开关机的,那么就会把计算机关闭。这就是机器语言的原理。
NPN型晶体管与PNP型晶体管正好相反,高电平导通,低电平断开。

(二)如何用晶体管搭建逻辑电路?

基本逻辑运算包括非、与、或。
其他更复杂的逻辑运算都是这些基本逻辑运算组成的。
这些基本逻辑运算对应的电路叫做门电路,都是最基本的逻辑电路,由若干晶体管组成。
之所以叫“门”,是因为它就像一个转换门,把进入的信号转换成输出的信号。

1、非门(not)

非门电路用来实现非逻辑运算
非门电路又叫“否”运算,也称求“反”运算,因此非门电路又称为反相器。

AY
01
10

下面是使用一个NPN型晶体管组成的非门电路。
A为高电平,T1导通,Y为低电平;A为低电平,T1截止,Y为高电平。

在这里插入图片描述

2、与门(and)

与门电路用来实现与逻辑运算。
与门电路是指只有在一件事情的所有条件都具备时,事情才会发生。
下面是电路图。A和B作为输入,Q作为输出。
例如A输入低电平、B输入高电平,那么Q就会输出低电平;转换为二进制就是A输入0、B输入1,那么Q就会输出0。

ABY
000
010
100
111

用2个NPN三极管搭建与门;
A和B都为高电平时,T2和T3都导通,此时Y为高电平。

在这里插入图片描述

3、或门(or)

或门电路用来实现或逻辑运算。
或门电路是指只要有一个或一个以上条件满足时,事情就会发生。

ABY
000
011
101
111

用2个NPN三极管搭建或门;
A或B只要有一个是高电平时,T4或T5就导通,此时Y为高电平。

在这里插入图片描述

其他的异或门(xor)、与非门、或非门、异或非门(同或门)都可以使用上面3种组合而成,这里就不具体介绍了。
为了方便画图,把门电路符号化。
在这里插入图片描述

四、如何实现算术运算呢?

现在我们有了基本逻辑电路,可以实现逻辑运算,那么该如何实现算术运算呢?也就是如何把二进制算术运算转换成逻辑运算?
算术运算包括加减乘除。

(一)我们先讲加法。

如何把加法表达式转化成逻辑表达式?
下面就是A+B的示意图。
Cin是输入进位,Cout是输出进位,Sum是和。
这些符号都表示一个二进制数,要么是1,要么是0。
在这里插入图片描述

因为10和真假可以相互转化,所以可以将A+B+Cin转换成以下的逻辑表达式:
Sum=A xor B xor Cin
Cout=A and B or Cin and (A xor B)
然后根据逻辑表达式,制作逻辑电路。
在这里插入图片描述

上面这个电路就叫做全加器。
为了方便画图,我们把全加器也符号化。
在这里插入图片描述

因为这个全加器只能计算1位二进制,而我们要计算的数通常是32位的,所以我们需要32个全加器,连起来。这就构成了三十二位加法器。下图是五位加法器,仅为了举例,因为32位太难画了。
在这里插入图片描述

有了加法器,我们就可以手动给A和B设定数值,比如A是12=01100,B是10=01010,然后一瞬间,我们就得到Sum的值是22=10110。

(二)减法怎么实现呢?

从上面可以看到运算电路的输入输出都是二进制1和0,它并不区分正负数,或者说它总是把二进制看作正数。
既然计算机它总是把二进制看作正数,那么我们如何表示负数,实现减法呢?
答案就是,我们自己规定了一套用二进制表示负数的规则。这个规则就是,使用一个数的补码表示这个数的负数。
规定:
-x的二进制是x二进制的补码。
两个二进制互为补码,当且仅当,两个二进制的和是2^w。w是二进制位数。
在数学上两个二进制的和是2^w,但是因为计算机实际运算时加数与和的二进制位数是相同的,所以最高位的进位会舍弃,这样就只剩下w个0了,就变成互为补码的两个二进制的和实际上为0。
比如,1111 1111 + 0000 0001 = (1)0000 0000,所以1111 1111 和 0000 0001就互为补码。
因为二进制位数固定相同,最高位的进位会舍弃,所以相当于两个的和是0。

这样规定之后,就能用二进制表示负数了。这样就能复用上面的加法器,正确计算减法了,减法就变成取补运算了。求x二进制的补码就是用2^w - x二进制。注意取补的过程是人做的,不是加法器做的,人把手动求出的补码输入加法器,加法器再把补码相加。
比如5-1,实际上就是5+(-1),-1的二进制是1的二进制的补码,也就是2^w-1。我们把5的二进制和-1的二进制分别输入加法器,就能计算出结果了。

下面我们看几个减法运算的例子,体会一下减法运算的正确性。
比如,-1 + -3 = -4,如果能证明-1的二进制与-3的二进制的和就是-4的二进制,是不是就证明了计算的正确性?
根据规定,-1的二进制就是1的补码,为2^w - 1。-3的二进制就是3的补码,为2^w - 3。-4的二进制就是4的补码,为2^w - 4。如果能证明(2^w - 1) + (2^w - 3) = 2^w - 4,那么就证明了计算的正确性。
证明:
(2^w - 1) + (2^w - 3) = 2^w + 2^w - 4,因为实际运算时二进制位数固定,最高进位要舍弃,所以结果要取余。
2^w + 2^w - 4 mod 2^w = 2^w - 4,取余之后正好是-4的二进制,所以-1的二进制与-3的二进制的和就是-4的二进制。
复用上图的五位加法器,就是手动给A设置11111,也就是-1的二进制,给B设置11101,也就是-3的二进制,然后一瞬间,得到Sum的值是11100,也就是-4的二进制。

同理下面几个例子也是正确的。
-3 + 1 = -2,(2^w - 3) + 1 = 2^w - 2,也是正确的。
3 + -1 = 2,3 + (2^w - 1) = 2^w + 2 mod 2^w = 2,也是正确的。
-2 + 2 = 0,(2^w - 2) + 2 = 2^w mod 2^w = 0,也是正确的。

可见用补码来表示负数,从而实现减法是正确的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值