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

目录

一、为什么是二进制?

二、二进制的加法和乘法

三、二进制向十进制转换

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

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

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

一、为什么是二进制?

我们知道电脑的数据本质上是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取整法"呢?

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

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

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

参考来源:

相关推荐
大明者省2 小时前
WSL2 Ubuntu22.04 GPU训练环境配置指南
人工智能·算法·计算机视觉
糖炒栗子03263 小时前
ReAct 论文精简梳理
其他
白狐_7984 小时前
408数据结构第8章:排序②——性质对比秒杀、场景选择与外部排序
java·数据结构·算法
zander2584 小时前
LeetCode 84:柱状图中的最大矩形——单调栈如何确定左右边界
java·数据结构·算法
Shell运维手记5 小时前
Linux 常用基础命令学习笔记
linux·运维·笔记·学习·算法·github
杨航 AI5 小时前
O(n log n):线性对数原理拆解 这个是排序算法的黄金复杂度之一。
算法·排序算法
船厂电气自动化ai大模型5 小时前
AI大模型与数学 第32课 函数凹凸性与二阶导数:拐点求解、凹凸区间计算(10道二阶导数计算题)
数据结构·人工智能·python·深度学习·算法
旖旎夜光5 小时前
LeetCode 3:无重复字符的最长子串(滑动窗口) —— 题解
数据结构·c++·算法·leetcode·滑动窗口
叠层归一研究院7 小时前
AGI 系统(十一):二阶网络 — 二阶递归 × 多主体 (元符号网络)
开发语言·人工智能·算法·php·agi
zlinear数据采集卡7 小时前
D223的PWM电机控制:6路独立脉冲+加减速算法深度解析
arm开发·stm32·嵌入式硬件·算法·fpga开发·架构