【超级基础版】十进制与二进制的转换

目录

一、为什么是二进制?

二、二进制的加法和乘法

三、二进制向十进制转换

四、十进制整数向二进制转换

五、十进制小数向二进制小数的转换

六、八进制和十六进制的引入

一、为什么是二进制?

我们知道电脑的数据本质上是0和1,就是我们使用的二进制。为什么计算机要使用二进制来进行数据的存储和运算呢?

计算机的发展至今经历了四代,从电子管、晶体管、中/小规模继承电路,到大规模/超大规模继承电路,这些逻辑电路通常只有两种状态------通电或断电,两种状态正好可以用"1"和"0"来表示。于是可以用二进制表示电流的通断。

这是计算机用二进制来表示信息的基本逻辑。

二、二进制的加法和乘法

二进制的加法和乘法,结合物理的串联、并联更好理解。我们将开关器件的是否连接即电路的通断同1和0来表示,把电灯的是否亮起也分别用1和0来表示,可以得到如下分析:

  1. 二进制的加法

二进制的加法用物理的并联电路来加以理解:

​

|-----|---|-----|---|------|---------------------|
| 开关A | | 开关B | | 灯的状态 | 说明 |
| 0 | + | 0 | = | 0 | 开关A断开,开关B断开,灯不亮 |
| 0 | + | 1 | = | 1 | 开关A断开,开关B连接,形成回路,灯亮 |
| 1 | + | 0 | = | 1 | 开关A连接,开关B断开,形成回路,灯亮 |
| 1 | + | 1 | = | 10 | 开关A连接,开关B连接,形成回路,灯亮 |

  1. 二进制的乘法

二进制的乘法用物理的串联电路来加以理解:

​

|-----|----|-----|---|------|---------------------|
| 开关A | | 开关B | | 灯的状态 | 说明 |
| 0 | * | 0 | = | 0 | 开关A断开,开关B断开,灯不亮 |
| 0 | * | 1 | = | 0 | 开关A断开,开关B连接,灯不亮 |
| 1 | * | 0 | = | 0 | 开关A连接,开关B断开,灯不亮 |
| 1 | * | 1 | = | 1 | 开关A连接,开关B连接,形成回路,灯亮 |

二进制的加法:逢二进一。二进制的乘法:有0则为0,全1才为1。

三、二进制向十进制转换

  • 二进制与十进制的转换,可以先找一找规律:

|---------|--------|--------------------|---------|-----------|
| 十进制 | 2的几次幂? | 演算备注 | 二进制 | 1的后面有几个0? |
| 0 | | | 0 | |
| 1 | 2的0次幂 | | 1 | 0个0 |
| 2 | 2的1次幂 | 竖式演算: 1 +++ 1++ 10 | 10 | 1个0 |
| 3 | | 10 +++ 1++ 11 | 11 | |
| 4 | 2的2次幂 | 11 +++ 1++ 100 | 100 | 2个0 |
| 5 | | | 101 | |
| 6 | | | 110 | |
| 7 | | | 111 | |
| 8 | 2的3次幂 | | 1000 | 3个0 |
| 9 | | | 1001 | |
| ...... | | | ...... | ...... |

通过上表我们可以找到规律:当十进制的某个数是2的某次方的时候,转换成二进制时就是1的后面添加多少个0的问题。

故我们可以形成二进制对十进制的转换,举例说明:

​

由此,我们产生了更简便的方法:
​

  • 聊完了规律,该讲一讲原理:

二进制转换十进制数其实是以二为基数,按权展开求和。以十进制数1998为例:
​

反正什么进制的加法都是这么来的。我就不信你还不懂哈哈哈!

四、十进制整数向二进制转换

十进制数转换为二进制数一般需要将十进制数的整数部分和小数部分分别转换后,再加以合并。十进制数的整数部分转换为二进制数,用"除2取余数法"。如十进制数41:

​ 但是除二取余法为什么可以实现十进制转二进制数呢?

这是由数的进制的性质决定的。

任何一种进制,它的各位数,乘权求和以后就能得到它的真值(如上上图所示)。所以,对进制值取模以后,就能得到它的最低位;而将这个数除以它的进制值(丢弃余数)后,就能得到它除最低位以外的其它位的数据。重复这二步,就能得到某个真值所对应的该进制数的所有各位上的数字。以十进制数1998举例说明:

五、十进制小数向二进制 小数的转换

十进制小数转二进制用的是"乘2取整法"。以十进制小数0.25为例:

那么我们为什么可以用"乘2取整法"呢?

在这里我们不得不要引入一个概念------数的移位!

我们将数的小数点向左移动一位,相当于除以这个数的进制值;将数的小数点向右移动一位,相当于乘以这个数的进制值。

这里还没想好!想好来再补!

参考来源:

相关推荐
徐小夕4 小时前
花了3个月,我们做了一款 AI 版的“飞书文档”
前端·算法·github
Robert--cao4 小时前
移动底盘与机械臂联合规划:开源算法与工程实现
算法
小豆庄5 小时前
Mac 上给视频人脸打码:本地工具的依赖、追踪与推理管线
算法·视觉检测·视频·敏捷流程·纹理贴图
星夜离尘565 小时前
MATLAB 工程实验:从相邻块均值手写重叠 Allan 偏差,数清有效项
算法·matlab·均值算法
y1su8 小时前
Leetcode 字符串模板
java·数据结构·算法·leetcode·职场和发展·动态规划
residual_fan8 小时前
船用柴油机动态机动工况故障诊断:控制感知仿射网络(CAAN)的技术实现
人工智能·算法·数据挖掘·数据分析
其实防守也摸鱼9 小时前
Cylab在线靶场——CTF中的通用技能
linux·数据库·学习·算法·靶场·ctf·学习网络安全
蓝悦无人机9 小时前
《Planning algorithms》读书笔记——第8章 反馈运动规划
算法·读书笔记·反馈运动规划
RaaS1009 小时前
Agent Skills 进了 Linux Foundation:2.8 亿次安装,但装 skill 还没有安全规范
人工智能·算法·架构
CV爱数码9 小时前
CT 重建从零开始(五):ASTRA Toolbox 上手——几何、投影器与算法
图像处理·算法·计算机视觉·ct