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

目录

一、为什么是二进制?

二、二进制的加法和乘法

三、二进制向十进制转换

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

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

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

一、为什么是二进制?

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

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

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

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

参考来源:

相关推荐
老师我太想进步了20268 小时前
【数据结构-4】算法美学之顺序表
数据结构·算法
风影同志783249 小时前
编码器是激活函数吗?—— 一个看起来很像、其实不是的类比
算法
UIU1149 小时前
P1481 魔族密码
c++·算法·动态规划
加宝的起点雷达12 小时前
40 条候选里 38 条来自同一个源,主卡整屏重样
人工智能·算法·创业
秋天的怀念_David12 小时前
算法一千零一夜 · 第二十六夜 协议的母语
java·spring boot·算法
闻缺陷则喜何志丹15 小时前
【C++特性】四种类型转
c++·算法·类型转换
喵本喵叁肆15 小时前
用 Boosting 把弱隐私算法炼成强隐私算法(英文原题:Boosting and Differential Privacy (FOCS 2010))
算法·集成学习·boosting
青梅味猪大肠16 小时前
【操作系统-60】临近适应算法
java·linux·开发语言·嵌入式硬件·算法·操作系统