是几进制_10分钟带你了解什么是二进制
世界上有10种人:一种是懂得二进制的,另一种是不懂二进制的
上面这是流传在程序员之间很久的一个冷笑话。
是不是get不到梗的笑点?
没有关系,看完本文,你再来看这句话就会会心一笑。
回到过去
让我们假设你回到了初中,这时候你情窦初开。喜欢上了临街的小哥哥(小姐姐),你们俩家的窗户面对面。放寒假的时候,你们约好了某天晚上八点偷偷溜出来约会。但是不能让父母知道,所以你们不能通过打电话方式来通知对方,今晚自己是否能顺利溜出来。为了不让对方白等,你们不得不约定一种新的通信方式。
这种新的通信方式要满足:
- 安静--不能让父母听到,能悄无声息自然是最好了
- 易懂--对方看到后能立马知道你要表达的信息
因为住的很近,可以从窗户相互看到对方家里,聪明的你立马想到可以用屋子里吊灯的灯光来进行通信。
你们约定到了八点钟
如果我屋子里的灯亮着,代表我可以顺利溜出去
如果我屋子里的灯不亮,代表我无法顺利溜出去
现在你们就可以用屋子里的灯开关,来表达两种状态
开:能出来
关:不能出来
你们可以悄无声息给对方传达信息,这太完美了!
新的问题
不过过了一段时间你们发现了新问题,有时候,8点钟恰好有事情,可能要推迟半小时才能溜出来。有时候,8点钟事情比较多,可能要推迟1小时才能出来。
现在你们有四种信息要传递
- 今晚8点钟准时出来
- 今晚不能出来
- 今晚8点30能出来
- 今晚9点能出来
但是一盏灯的开关只能表示两种状态,怎么办才好呢?
聪明的你立马想到,可以再加一盏灯啊!你把书桌上的台灯放到窗前
并且更新了之前的通信方式
- 台灯关着,吊灯关着--今晚没戏,出不来了
台灯关着,吊灯开着--今晚8点,不见不散
台灯开着,吊灯关着--推迟半小时,今晚八点半才能溜出来
台灯开着,吊灯开着--推迟1小时,今晚9点才能溜出来
哇哦,再一次用自己的聪明才智解决了这个问题。
现在你用两盏灯,来表达四种状态。
一些思考
让我们用符号来重新表述下
我们用数字0表示灯灭
数字1表示灯亮
一盏灯的情况
- 0 ==> 今晚八点准时出来
- 1 ==> 今晚八点不能出来
两盏灯的情况
- 0 0 ==> 今晚没戏,出不来了
- 0 1 ==> 今晚8点,不见不散
- 1 0 ==> 推迟半小时,今晚八点半才能溜出来
- 1 1 ==> 推迟1小时,今晚9点才能溜出来
让我们再来简化一下箭头右边,我们用数字0,1,2,3 分别来代表今晚约会的4种状态
- 0: 今晚没戏,出不来了
- 1: 今晚8点,不见不散
- 2: 推迟半小时,今晚八点半才能溜出来
- 3: 推迟1小时,今晚9点才能溜出来
现在我们可以把两边都用数字来简化了
- 00 ==> 0
- 01 ==> 1
- 10 ==> 2
- 11 ==> 3
如果我们再加一盏灯,能表示多少种状态呢?
- 000 ==> 0
- 001 ==> 1
- 010 ==> 2
- 011 ==> 3
- 100 ==> 4
- 101 ==> 5
- 110 ==> 6
- 111 ==> 7
一共是8种
好了,现在我告诉你,已经开始使用二进制了!
没错!
左边的是二进制,右边就是相对应的十进制
比如说二进制的 111
代表的就是我们常用十进制的 7
为什么呢?
虽然你可能不太相信,但是确实你已经开始使用二进制了。
那么二进制到底是怎么回事呢?
我们日常生活中所用的都是十进制,也就是满10进1
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
当要数10时,就要进1位,也就是十位数写1个位数写0
就是10啦
二进制就是满2进1,
0
1
10
11
10
100
当要数2的时候,就要进1位了,下一位写1,当前位变成0
也就是10
二进制转十进制
那么我们看到一个二进制的数,如何知道它表示的10进制的数是几呢?
我们还是想一下十进制的101,我们可以很轻松的读出来这是 一百零一
但是我们怎么知道 一零一
就是 一百一十一
呢?
因为我们知道
从右边向左数
第一位是个位,这个位的数字是几就是几
第二位是十位,这个位的数字是几就表示几十
第二位是百位,这个位的数字是几就表示几百
所以101 = 1x100 + 0x10 + 1x1
一个一百 + 零个10 + 一个一
我们这里引入一个新名词权重(Weight) 来表示每一位的实际意义
个位--权重 1 = 10^0 十的零次方
十位--权重 10 = 10^1 十的一次方
百位--权重 100 = 10x10 = 10^2 十的二次方
千位--权重 1000= 10x10x10 = 10^3 十的三次方
可以看到从右边向左 权重依次扩大10倍
所以我们其实可以到这样的结论
其实就是每一位的数字乘以此位的权重,然后相加101 = 1x10x10 + 0*10 + 1x1
用次方表示101 = 1x(10^2) + 0x(10^1) + 1x(10^0) = 1x100 + 0x10 + 1 =101
OK我们如何表示知道二进制具体的大小,只需要套用这个公式即可
那么首先我们要知道二进制每一位的权重是多少
既然十进制每一位权重都是10的次方数
那么二进制的每一位权重自然是2的次方数了
从右向左数
第一位 1 = 2^0 二的零次方
第二位 2 = 2^1 二的一次方
第三位 4 = 2x2= 2^2 二的二次方
那么回到我们之前的问题,
二进制的101,我们从上文的状态表可以知道
- 000 ==> 0
- 001 ==> 1
- 010 ==> 2
- 011 ==> 3
- 100 ==> 4
- 101 ==> 5
- 110 ==> 6
- 111 ==> 7
代表的是5
转换过程101 = 1x(2^2)+0x2^1 + 1x(2^0) = 1x4+0x2+1=5
怎么样,很简单吧!
get 这个梗
再回到我们最初那个冷笑话
世界上有10种人:一种是懂得二进制的,另一种是不懂二进制的
这里的10其实是二进制的,转换成十进制就是 10=1x(2^1)+0x(2^0)=1x2+0x1=2
其实就是十进制的2
会心一笑了吗?
是几进制_10分钟带你了解什么是二进制相关推荐
- 用程序员计算机算进制,一文带你读懂计算机进制
hi,大家好,我是开发者FTD.在我们的学习和工作中少不了与进制打交道,从出生开始上学,最早接触的就是十进制,当大家学习和使用计算机时候,我们又接触到了二进制.八进制以及十六进制.那么大家对进制的认识 ...
- 【verilog_8】: 设计60进制计数器,带异步复位、同步使能、同步装载、同步清零、同步置位
1.设计60进制计数器,带异步复位.同步使能.同步装载.同步清零.同步置位 法一 author : Mr.Mao e-mail : 2458682080@qq.commodule cnt60x (in ...
- 设计60进制计数器,带异步复位、同步使能、同步装载、同步清零、同步置位
设计60进制计数器,带异步复位.同步使能.同步装载.同步清零.同步置位 Design a modulus 60 counter, with asynchronous reset, synchronou ...
- a*算法matlab代码_10分钟带你入门MATLAB
10分钟带你快速入门MATLABhttps://www.zhihu.com/video/1234089282815188992 前一段时间我发现有些小伙伴MATLAB基础比较薄弱,今天我来让各位小 ...
- c语言十进制小数转其他进制,只写出了十进制小数转换成二进制的,求二进制小数转十进制的...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include #define NUM 2 #define ZERO 0.000001 int PrnMainMen ...
- jk触发器改为四进制_异步计数器 || 计数器的分类 ||异步二进制十进制|| 74290 8421 5421 || 数电...
异步计数器 || 计数器的分类 || 异步 二进制 十进制 || 74290 || 数电 这一节介绍异步二进制计数器. 计数器功能: 计数器是对输入脉冲个数进行计数的时序电路. 计数器除了直接用于计数 ...
- pandas 索引_10分钟带你学会Pandas多层级索引
Pandas库的名字来源于其中3种主要数据结构开头字母的缩写: Panel,Dataframe,Series. 其中Series表示一维数据,Dataframe表示二维数据,Panel表示三维数据. ...
- 多维列表索引_10分钟带你学会Pandas多层级索引
Pandas库的名字来源于其中3种主要数据结构开头字母的缩写: Panel,Dataframe,Series. 其中Series表示一维数据,Dataframe表示二维数据,Panel表示三维数据. ...
- 反向算法_10分钟带你了解神经网络基础:反向传播算法详解
作者:Great Learning Team deephub.ai 翻译组 1.神经网络 2.什么是反向传播? 3.反向传播是如何工作的? 4.损失函数 5.为什么我们需要反向传播? 6.前馈网络 7 ...
最新文章
- ansible调用callbacks插件 保存执行结果
- 下载anaconda前需要卸载python吗_anaconda安装与卸载
- 压缩文件目录 linux,linux_压缩文件及目录
- 屏蔽机房设计时需要注意什么 ?如何更好维护使用屏蔽机房?
- C# Aes CryptoStream Specified padding mode is not valid for this algorithm的解決方法
- html5编辑文档,HTML5带各种趣味动画的文本编辑器
- 使用SQL存储过程有什么好处 用视图有什么好处
- macOS big Sur 无限进入恢复模式,如何修复
- Matlab中滤波操作的相关函数
- 高等数学张宇18讲 第十七讲 三重积分、第一型曲线曲面积分
- 下载并安装 J2SDK以及运行第一个java程序
- 8K HDR!|为 Chromium 实现 HEVC 硬解 - 原理/实测指南
- 【华为面试手撕代码】
- 对本人所发资源“金山词霸2010牛津旗舰版安装及故障终极解决方案”的说明
- JavaScript---网络编程(9-2)--DHTML技术演示(2-2)-表格加强
- integer conversion resulted in a change of sign
- 我不喜欢代码,却为何坚持做程序员(二)
- docker(5、网络2) 1、容器间通信的三种方式 2、 容器如何访问外部 3、 外部如何访问容器
- 打入客户内部做销售1
- 0-1整数规划的求解思路整理
热门文章
- FFmpeg之wav转mp3(二十四)
- Android 音频焦点(Audio Focus)
- android 恢复出厂设置代码流程(Good!)
- UE4之批量删除actor
- mysql之desc 与asc
- Python numpy 多维数组切片
- mpacc和计算机硕士,考MPAcc还是工作?读研三年VS工作三年对比!
- 新冠疫情数据可视化python_【一点资讯】新冠疫情数据分析 | Python可视化工具看全国各地的新增趋势 www.yidianzixun.com...
- mysql服务器架构_Mysql的主从服务器架构配置
- as安装过程中gradle_电磁阀在安装过程中需注意的一些细节