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

目录

一、为什么是二进制?

二、二进制的加法和乘法

三、二进制向十进制转换

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

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

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

一、为什么是二进制?

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

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

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

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

参考来源:

相关推荐
yi0111 小时前
LeetCode 219:存在重复元素 II——哈希表记录“最近一次出现的位置”
数据结构·人工智能·笔记·python·算法·leetcode·哈希表
灯澜忆梦4 小时前
【面向对象编程C++】| 基础语法
java·c++·算法
小蒋观天下4 小时前
专项方案:大场景港口AI安防、多干扰环境下的算法调优与落地实操
人工智能·深度学习·算法·安全·机器学习·计算机视觉·ai大模型
Evand J4 小时前
【电机滤波例程5】渐消因子自适应扩展卡尔曼滤波(EKF),MATLAB。PMSM负载突变下的状态估计。附下载链接
算法·matlab
H.莓飛4 小时前
【数据结构】二叉树_OJ题
linux·开发语言·数据结构·算法
好想像大佬一样能够ak所有5 小时前
Leetcode35.搜索插入位置
数据结构·算法·leetcode
aqiu1111115 小时前
【C++算法打怪专栏】LeetCode 165. 比较版本号(双指针与字符串流法)
c++·算法·leetcode
黄金龙PLUS5 小时前
如何基于置换算法来设计对称加密算法
算法·网络安全·密码学·哈希算法·同态加密
不会就选b5 小时前
算法日常・每日刷题--<动态规划>14
算法
赛博守夜人5 小时前
跨境业务与出海合规之九:海外买量投放与营销虚假流量(Ad Fraud):跨国机房群控与归因欺诈识别算法
算法·安全