什么是二进制?
计算机最早是机电设备,一般用十进制计数,比如用齿轮数来代表十进制,再到晶体管计算机,晶体管计算机只用开/关两种状态就可以代表信息,就叫二进制,意思是“用两种状态表示”。
(如果你觉得两种状态不够多,那也没错,量子计算机可以了解一下)

为什么要用二进制?
晶体管的确可以不只是开/关,也可以让不同大小的电流通过,一些早期的电子计算机就是三进制的,有3中状态,甚至5进制,5中状态。
但问题是,状态越多,越难区分信号,如果手机快没电了或附近有电噪音(电磁炉啥的),这时信号就可能会混在一起。晶体管每秒的变化次数可以高达百万次,然后接收的信号杂乱,也就是晶体管这时不知道要处理哪个信号了。
所以尽量把两种信号分开,只用 “开” 和 ‘关" 两种状态,可以尽可能的减少信号干扰问题。
如图:

计算机使用二进制的另一个原因是:有一整个数学分支的存在,专门处理真和假(0,1),它已经解决了所有运算法则,叫做 “布尔代数”。

布尔代数中有三个基本操作:NOT,AND和OR

NOT操作是把布尔值反转,把true进行NOT就会变成false,反正亦然。晶体管可以轻松实现这个逻辑,晶体管只是电控制的开关,有3根线:2根电极和1根控制线,控制线通电时,电流可以从一个电极流到另一个电极。可以把控制线当作输入,底部的电极当作输出。所以1个晶体管只有一个输入和一个输出。
那么晶体管怎么实现NOT呢?
大概知道就行了。。。

其实程序员不太要考虑逻辑是怎样在物理层面实现的。

什么是二进制,为什么要用二进制相关推荐

  1. mysql二进制日志管理_MYSQL二进制日志管理脚本

    MYSQL二进制日志管理脚本脚本原理是每小时对进行flush生成新的二进制日志,将二进制日志备份至NFS,并压缩存放:#!/bin/bash#Purpose:管理二进制日志,每小时刷新二进制日志,并将 ...

  2. java中各进制之间的转换(十进制转十六进制、十进制转二进制、二进制转十进制、二进制转十六进制)...

    在java编辑中有没有遇到经常需要进行java中各进制之间的转换(十进制转十六进制.十进制转二进制.二进制转十进制.二进制转十六进制)的事情呢?下面我们就来分析一下各自是怎么转换的: [java] / ...

  3. mysql5.7开启二进制日志_MySQL5.7二进制日志

    概要 二进制日志是MySQL服务器用来记录数据修改事件的,比如INSERT.UPDATE.DELETE等会导致数据发生变化的语句,SELECT语句不会被记录在内.MySQL必须先执行完一条语句才能知道 ...

  4. mysql二进制日志特点_MySQL二进制日志分析-概述篇

    MySQL从3.23版本开始引入了二进制日志,用于的数据复制, 二进制日志根据MySQL的版本不同,目前有4个版本: https://dev.mysql.com/doc/internals/en/bi ...

  5. mysql二进制日志重置_MySQL二进制日志备份和恢复详解

    原文链接:http://www.showerlee.com/archives/681 ****经实践,该教程ok,特在此分享**** 基本概念 定义: 二进制日志包含了所有更新了数据或者已经潜在更新了 ...

  6. hdl四位二进制计数器_quartus4位二进制加减法计数器.doc

    贵州大学实验报告 学院: 专业: 班级 姓名学号实验组实验时间指导教师成绩实验项目名称4位二进制加减法计数器实验目的了解二进制加减法计数器的设计,进一步了解,熟悉和掌握quartusII的使用方法 学 ...

  7. Matlab中 将八进制转换为二进制,并取二进制中某一位

    例如:12(八进制),将其转化为二进制,并取二进制第n位(n为二进制从低位到高位的位置) 解:程序及其结果为 方便复制: x=12a=num2str(x) %输入八进制12b=base2dec(a,8 ...

  8. qt中十进制转换为十六进制和二进制字符串,以及二进制字符串转十进制,十六进制字符串

    概述 直接上代码,记录一下,方便日后使用: 示例一 将十进制转换为二进制和十六进制字符串: int num = 23; QString str = QString::number(num,16);// ...

  9. mysql临时开启二进制_关于MySQL二进制日志Binlog的认识

    MySQL的二进制日志可以说或是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是失误安全型的. 在 ...

  10. 二进制_Kubernetes集群二进制部署

    一.环境规划 操作系统:CentOS7.4_x64 kubernetes安装目录:/opt/kubernetes 版本说明: Kubernetes:v1.9 Docker:v17.12.0-ce Et ...

最新文章

  1. 三种求全排列方式之比较
  2. 为.Net程序集添加资源
  3. [android] 练习使用ListView(一)
  4. C语言中,当计算字符数组长度时,用sizeof 和strlen 的原理及两者的区别
  5. ffmpeg推送摄像头rtmp流
  6. 还在用SELECT COUNT统计数据库表的行数?Out了
  7. 正则表达式提取器_C++11新特性7 - 正则表达式
  8. apollo动态切换mysql数据源_log4j2从Apollo初始化配置并可动态变更
  9. vc可以实现对话框里显示html文档内容,也可以显示word内容吗,VC6中使用CHtmlView在对话框控制中显示HTML文档...
  10. azure 导入 bak_使用Azure Data StudioSQL Server数据导入
  11. ruby学习--block
  12. 3.第九章 树--9.3 二叉树结点类表示
  13. 更换pip源,解决pip install安装包慢的问题
  14. mysql 查看内核版本命令_Linux查看版本命令问题
  15. error “Device supports x86, but APK only supports armeabi-v7a”
  16. 实验三:从整理上理解进程创建、可执行文件的加载和进程执行进程切换,重点理解分析fork、execve和进程切换...
  17. IM即时通讯项目讲解(二)--自定义实现图片选择GalleryView
  18. 基于arduino WS2812b RGB灯带控制程序一
  19. 【Java】指定【微信】好友自动发送消息
  20. 如何禁用或重新启用计算机的休眠功能

热门文章

  1. 多层陶瓷电容器用处_陶瓷电容器的作用有哪些?
  2. 微信小程序开发教程——1.0.1appid注册和开发者工具下载
  3. c51语言串口,C51 语言编程:单片机与 PC 串口通信程序
  4. Nature子刊:使用纳米孔测序从微生物组中得到完整闭环的细菌基因组
  5. IP签名档PHP源码,IPCard 一款天气图标签名档源码
  6. Linked list
  7. Educational Codeforces Round 47 (Rated for Div. 2) D ---- Relatively Prime Graph
  8. QQ微信可以上网,但是浏览器上不了网怎么办?
  9. 移动硬盘插入提示需要格式化RAW_学会自己判断移动硬盘故障!如何在保数据的情况下进行正确处理!...
  10. matlab计算可靠性过程,基于MATLAB的蒙特卡洛方法对可靠度的计算