3、布尔逻辑 和 逻辑门

元图
• 阅读 2879

1、计算机使用二进制的原因

原因一:状态越多,越难区分信号

  • 计算机最早是机电设备,一般用十进制计数, 比如用齿轮数来代表十进制。
  • 还有一些早期电子计算机是三进制的,有 3 种状态,甚至五进制,5 种状态。(因为晶体管可以不只是 开/关,还可以让不同大小的电流通过。)

    多种状态的缺点:
    状态越多,越难区分信号,如果手机快没电了或者附近有电噪音,
    因为有人在用微波炉,信号可能会混在一起,而每秒百万次变化的晶体管会让这个问题变得更糟。
    
    解决办法:把两种信号尽可能分开, 只用"开"和"关"两种状态,可以尽可能减少这类问题。
  • 只用 开/关 两种状态,叫 二进制。电路闭合,电流流过,代表 "真",电路断开,无电流流过,代表"假"。

原因二:布尔代数的存在

布尔代数专门处理"真"和"假",它已经解决了所有法则和运算。布尔代数中有三个基本操作:NOT, AND 和 OR。用晶体管可以轻松实现这些逻辑。

小知识补充:
乔治·布尔(George Boole)是布尔二字的由来,他是一位 19 世纪自学成才的英国数学家。
他有兴趣用数学式子扩展亚里士多德基于哲学的逻辑方法。用逻辑方程 系统而正式的证明真理。
他在 1847 年的第一本书"逻辑的数学分析"中介绍过,在"常规"代数里 变量的值是数字,可以进行加法或乘法之类的操作,但在布尔代数中,变量的值是 true 和 false,能进行逻辑操作。

2、 用晶体管做逻辑门: NOT、AND、OR、XOR

3、布尔逻辑 和 逻辑门

3、布尔逻辑 和 逻辑门

3、布尔逻辑 和 逻辑门

3、布尔逻辑 和 逻辑门

点赞
收藏
评论区
推荐文章
浅梦一笑 浅梦一笑
4年前
Python 练手 "小例子" 闯关60题!
一、数字1求绝对值绝对值或复数的模In1:abs(6)Out1:62进制转化十进制转换为二进制:In2:bin(10)Out2:'0b1010'十进制转换为八进制:In3:oct(9)Out3:'0o11'十进制转换为十六进制:In4:hex(15)Out4:'0xf'3整数和ASCII互
Wesley13 Wesley13
3年前
JS中二进制与十进制的相互转换
今天在做题目的时候遇到了需要十进制转换为二进制,这个我知道用toString可以,但是二进制转换为十进制我一下子就想不起来,网上搜了下,才知道是parseInt可以实现,特此记录下。十进制转换为二进制:varnum100;console.log(num.toString(2));toString()方法可把一个
Wesley13 Wesley13
3年前
Java:利用BigDecimal类巧妙处理Double类型精度丢失
本篇要点简单描述浮点数十进制转二进制精度丢失的原因。介绍几种创建BigDecimal方式的区别。整理了高精度计算的工具类。学习了阿里巴巴Java开发手册关于BigDecimal比较相等的规定。经典问题:浮点数精度丢失精度丢失的问题是在其他计算机语言中也都会出
Wesley13 Wesley13
3年前
mysql编码排序规则
1、gbk\_chinese\_ci和gbk\_bin:如果设置为 gbk\_chinese\_ci,表数据包括索引判断不区分大小写;设置为gbk\_bin区分大小写。原因:gbk\_chinese\_ci:非二进制存储,不区分大小写gbk\_bin:以二进制形式进行存储,区分大小写2、如何修改排序规则SELECTCONC
Easter79 Easter79
3年前
TypeScript 基本类型(一)
1、boolean布尔值true/falseletisDone:booleanfalse;2、number数字:和JavaScript一样,TypeScript里的所有数字都是浮点数。另外支持二进制,八进制,十进制,十六进制。letdecLiteral:number6;lethex
Wesley13 Wesley13
3年前
Java中的位运算及简单的算法应用介绍
\TOC\Java中的位运算及简单的算法应用介绍众所周知,计算机底层是二进制。而java作为一门计算机编程语言,也对二进制的位运算提供了完整的支持。在java中,int是32位的,也就是说可以用来实现32位的位运算。方便起见,我们一般用16进制对它赋值,比如:0011表示成16进制是0x3,110111表示成16进制是0x37。
Stella981 Stella981
3年前
ASCII,Unicode,UTF
编码历史与区别  很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为"字节"。  再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为"计算机"。  开
Wesley13 Wesley13
3年前
CPU中的二进制数据(整数篇)
1.用二进制数表示计算机信息的原因计算机内部CPU和内存都是IC的一种,它们都有多个引脚。IC的所有引脚,只有直流电压0V或5V两个状态。也就是说,IC的一个引脚,只能表示两个状态。IC的这个特性,决定了计算机的信息数据只能用二进制数来处理。计算机处理信息的最小单位——位,就相当于二进制中的一位。对于用二进制数表示
Stella981 Stella981
3年前
ASCII、Unicode、GBK和UTF
很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为”字节“。再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为”计算机“。开始计算机只在美国用。八位的字节一共
Stella981 Stella981
3年前
ASCII,Unicode和UTF
一、ASCII码我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从00000000到11111111。上
Wesley13 Wesley13
3年前
JAVA入门基础
数学中,没有办法用十进制来精确表达1/3.同样的,计算机中,没有办法用二进制表示0.1比如:python中,java中都是一样的。a6.0b4.9ab1.0999999999999996x3.0y2.9xy0