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

目录

一、为什么是二进制?

二、二进制的加法和乘法

三、二进制向十进制转换

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

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

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

一、为什么是二进制?

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

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

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

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

参考来源:

相关推荐
liuyao_xianhui13 分钟前
优选算法_最小基因变化_bfs_C++
java·开发语言·数据结构·c++·算法·哈希算法·宽度优先
黎阳之光31 分钟前
数智技术如何赋能空天地一体化,领跑低空经济新赛道
大数据·人工智能·算法·安全·数字孪生
jikemaoshiyanshi35 分钟前
可提供从连接到自动化控制一体化解决方案的主流厂商有哪些?——明确厂商类型定义、厘清能力边界及拆解“一体化”构成要素
其他·自动化
小肝一下1 小时前
每日两道力扣,day2
c++·算法·leetcode·职场和发展
漂流瓶jz1 小时前
UVA-11846 找座位 题解答案代码 算法竞赛入门经典第二版
数据结构·算法·排序算法·深度优先·aoapc·算法竞赛入门经典·uva
米粒12 小时前
力扣算法刷题 Day 31 (贪心总结)
算法·leetcode·职场和发展
少许极端2 小时前
算法奇妙屋(四十)-贪心算法学习之路7
java·学习·算法·贪心算法
AlenTech2 小时前
647. 回文子串 - 力扣(LeetCode)
算法·leetcode·职场和发展
py有趣2 小时前
力扣热门100题之合并两个有序链表
算法·leetcode·链表
8Qi83 小时前
LeetCode热题100--45.跳跃游戏 II
java·算法·leetcode·贪心算法·编程