裂开,有个粉丝居然问我,为什么计算机底层要使用二进制

简介: 可是今天,在实现梦想的道路上,我遇到了非常大的麻烦。因为有个粉丝问我:为什么计算机底层要使用二进制。面对这个问题,我裂开了。这不是要为难我胖虎吗?哪个搞前端的会去思考这个问题。好在作为软件工程专业的科班生,《计算机组成与原理》是一门必修课,而我刚好还依稀记得十多年前学的小知识,花费我毕生的学识,还可以勉强应对这个问题。

可是今天,在实现梦想的道路上,我遇到了非常大的麻烦。因为有个粉丝问我:为什么计算机底层要使用二进制。


面对这个问题,我裂开了。这不是要为难我胖虎吗?哪个搞前端的会去思考这个问题。

好在作为软件工程专业的科班生,《计算机组成与原理》是一门必修课,而我刚好还依稀记得十多年前学的小知识,花费我毕生的学识,还可以勉强应对这个问题。


之所以会采用二进制根本的原因是:二极管。


微信图片_20220511161215.png


二极管是用半导体材料(硅)制成的一种电子器件。它有一个非常好的特性,就是单向导电。


即给二极管阳极加上正向电压时,二极管导通。当给阳极和阴极加上反向电压时,二极管阻断。


微信图片_20220511161218.png


那么这个特性有什么意义呢?


也就是说,机器很容易通过是否通电来判断二极管的状态。对于机器而言,一个二极管可以表达两种状态:true 与 false。或者 0 与 1。


那如果我逐渐增加二极管的数量呢?


当增加到两个二极管,就可以表达 16 种状态。依次递增,逢二进一。


0 0 0 0

0 0 0 1

0 0 1 0

0 0 1 1

0 1 0 0

0 1 0 1

0 1 1 0

0 1 1 1

1 0 0 0

1 0 0 1

1 0 1 0

1 0 1 1

1 1 0 0

1 1 0 1

1 1 1 0

1 1 1 1


这里的核心是,机器可以通过电流识别到这些不同状态而做出不同的回应,而人可以识别数字,数字可以通过二极管表达给机器。于是,这样的数字就成为了机器和人交流的关键基础理论。


即使是到了现在,所有的开发语言,最终都会编译成为二进制,与机器进行沟通。当然,现在也有了三极管


当二极管增加到千千万万甚至上亿个之后,二极管集群能够表达的不同含义就越来越多,人与机器之间的沟通,就变得丰富起来。我们可以通过不同的指令表达不同的含义。

现在计算机的大脑核心:CPU 就包含了上亿个二极管。


微信图片_20220511161221.png


如果在最开始的时候,一个二极管能表达十个状态,那么就有可能直接采用十进制,当然,这种晶体管还没有出现。


实际上,这样的理论基础在中国古代早就有运用:那就是算盘。


微信图片_20220511161226.png


我们国家算盘有两种用法,一种是十进制,一种是十六进制。我们可以使用很多串珠子来表达非常大的数目。因此,如果执行速度足够快,算盘足够多,我们也可以用算盘来组装一个人工大型计算器。当然,这其中的成本就太高了。


最后还有一个非常有意思的小知识点。我们经常听说的纳米芯片,其实说的就是最小晶体管的物理尺寸。与电脑不同的是,手机给 CPU 留下的空间并不充足,因此在有限的空间内放下更多的晶体管,就需要晶体管的尺寸足够小。


而当晶体管变小之后,电阻变小,电流通电所需要的电压就更小,于是所需要的功率也大幅度减小。这是手机提高 CPU 性能的主要优化手段和努力方向。目前,全世界最先进生产工艺能量产的芯片尺寸是 7 纳米,中国的生产工艺能量产的暂时只有 14 纳米。理论上极限最小尺寸是 1 纳米。

相关文章
|
3月前
|
人工智能 安全 Linux
告别空壳AI!OpenClaw阿里云/本地部署+百炼API配置+5500+Skill一键安装,覆盖30+场景
OpenClaw(前身为Clawdbot/Moltbot)的爆火,让本地AI Agent从概念走向实用——它打破云端束缚,将大模型部署在个人设备,兼顾隐私与可控性。但裸奔的OpenClaw只是“会思考的空壳”:想让它写爬虫需手动教装库,想让它搭博客要一步步调环境,如同雇了个“小白助手”。真正让其落地干活的,是Skill(技能插件)生态。
1223 5
|
3月前
|
人工智能 安全 Java
Symantec Endpoint Protection 14.4 发布 - 企业级终端安全平台
Symantec Endpoint Protection 14.4 发布 - 企业级终端安全平台
412 2
Symantec Endpoint Protection 14.4 发布 - 企业级终端安全平台
|
11月前
|
Java 区块链 Maven
关于引入maven项目后出现‘parent.relativePath’ of POM错误时的解决方法
关于引入maven项目后出现‘parent.relativePath’ of POM错误时的解决方法
770 3
|
10月前
|
监控 Cloud Native 调度
《云原生架构从崩溃失控到稳定自愈的实践方案》
本文以某大型电商供应链系统“618”大促期间的“服务雪崩”故障为切入点,剖析了云原生架构在极端流量下的稳定性短板。故障根源在于库存调度服务接口设计缺陷导致数据库连接池耗尽,且服务间缺乏熔断隔离机制,引发全链路瘫痪。技术团队通过重构核心接口、引入“熔断-隔离-降级”防护体系、搭建三位一体监控闭环、设计全流程流量管控方案,并开展常态化故障注入演练,实现架构从“事后救火”到“事前防御”的转变。改造后系统故障恢复时间大幅缩短,核心业务零中断,同时沉淀出云原生架构抗风险建设的实战方法论。
266 5
|
数据采集 消息中间件 Kubernetes
容器化爬虫部署:基于K8s的任务调度与自动扩缩容设计
随着业务复杂度提升,传统定时任务和手工扩缩容难以满足高并发与实时性需求。本文对比两种基于 Kubernetes 的爬虫调度与扩缩容方案:CronJob+HPA 和 KEDA。从调度灵活性、扩缩容粒度、实现难度等维度分析,并提供 YAML+Python 示例。方案 A(CronJob+HPA)适合固定定时任务,配置简单;方案 B(KEDA)支持事件驱动,适合高并发与异步触发场景。根据实际需求可混合使用,优化资源利用与效率。
491 4
|
架构师 Java 测试技术
一文搞透高并发指标(QPS、TPS、吞吐量等)
详解高并发场景下的QPS、TPS、RT及吞吐量等关键性能指标,帮助理解系统性能评估的核心概念。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文搞透高并发指标(QPS、TPS、吞吐量等)
|
移动开发 小程序 JavaScript
微信小程序学习实录6(百度经纬度采集、手动调整精度、H5嵌入小程序、百度地图jsAPI、实时定位、H5更新自动刷新)
微信小程序学习实录6(百度经纬度采集、手动调整精度、H5嵌入小程序、百度地图jsAPI、实时定位、H5更新自动刷新)
651 1
|
边缘计算 人工智能 安全
探索边缘计算:架构、优势及未来趋势
探索边缘计算:架构、优势及未来趋势
|
安全 网络安全 数据安全/隐私保护
智能家居安全:如何保护你的家庭免受网络威胁
在这篇技术性文章中,我们将深入探讨智能家居设备的安全性问题。随着越来越多的家庭采用智能技术,确保这些设备免受网络攻击变得至关重要。文章将涵盖常见的安全风险、预防措施以及如何应对潜在的网络威胁,以帮助读者保护自己的家庭网络安全。
|
存储 数据采集 前端开发
ClkLog 实践中的挑战:如何设计和实施有效的埋点指标
前端数据埋点要怎么做才能获取到有用的数据并对运营产生积极的作用,对于首次实施埋点及数据分析的工程师来说确实是个难点。网上很多文章讲的都是方法论和理论知识,真正实践的内容比较少,我们从一个案例来描述一下埋点要如何做。
ClkLog 实践中的挑战:如何设计和实施有效的埋点指标