首先要认识一下 十进制数 在计算机中是怎么表示的:
108 = 1 * 10 2+ 0 * 10 1 + 8 * 10 ^0
16 = 1 * 10 1+ 6 * 10 0
那么二进制数 在计算机中又是怎么表示的:
5 = 1 * 22 + 0 * 2 1 + 1 * 20
因此 二进制数 101 代表的是 5
16 = 1 * 24 + 0* 23 + 0 *2 2 + 0 * 2 1 + 0 * 20
因此 二进制数 10000 代表的是 16
- 注意: 什么是二进制数?
- 数码: 0、1
- 基数:2
- 运算规律:缝 2 进 1 ,借 1 当 2
- 二进制数的权展开: (101.01)B = 1 * 2 2 + 0 * 2 1 + 1 * 20 + 0 * 2 -1 + 1 * 2-2
那么 二进制数与 十进制数之间转换 有没有便捷的方法呢?
我们先来了解一下 十进制是怎么转换成二进制的
- example: 108(10) = ?
- 首先,前面提到了 二进制数是 由数码:0和1 基数为2 的一种表示方法
- 那么 当 十进制要转换成二进制的时候,就是由 基数为10 转换成基数为2 的 过程
- 因此我们需要先了解 2的各个次方的结果
20 = 0
21 = 2
22 = 4
23 = 8
24 = 16
25 = 32
26 = 64
27 = 128
…… - 通过上面 我们可以看得出来 108 是小于 2的7次方,故,108 最大能包含 2 的次方数是26
- 下面,我们就来展开十进制数 108 转换 二进制数的过程
108 = 64 + 44
= 26 + 44
= 26 + 32 + 12
=26 + 25+ 12
=26 + 25+ 8 + 4
=26 + 25+ 23 + 4
=26 + 25 + 23 + 22
=1 * 26 + 1 * 25 + 0 * 24 + 1 * 23 + 1 * 22 + 0 * 21+ 0 * 20
注意: 计算到这边的时候,会发现,“=26 + 25+ 23 + 22 ”非常的像二进制权展开的样式,但是其中缺少了24 、21 和 20,因此我们要帮其补齐
综上, 108 = 1101100
可以看到,通过上面的方式会发现 不管是用于 日常计算还是转换成程序,都会很麻,那么有没有简单便捷的方式?答案看到是有的。下面我们就来详细了解一下几种便捷的方法:
十进制转换二进制 便捷方法:
- 除以 2 逆向取余法
example: 108(10) = ?
通过上图,会发现, 将 108除以2后的每位余数按照正向顺序取出来所得是: 0011011
然而根据之前计算所得:108(10) = 1101100(2)
通过对比 就会发现,将余数反向顺序取出来所得 就是 1101100 ,也就是 十进制整数108 的二进制数 。这就是除以2方向取余法
通过上面我们已经明白了 整数的 十进制转二进制的快速方法,那么如果是带小数点的数呢? - 乘以2 顺向取整法
在了解 乘以2顺向取整法之前,咱们先了解一下,十进制带小数点的数 怎么转换成二进制数
example:0.875(10) = ?
与前面前面类似,通过拆分方法,咱们先计算出十进制小数转换成二进制小数的结果:(如下图)
通过上图,可得到 0.875(10) = 0.111(2)
那么乘以2顺序取整数法是怎么样的呢:
该方法要注意的是,只有取出 整数即可,小数点后面的数 不管。
补充个小知识
二进制数的运算规则
加法规则: 0+0 = 0 ; 0+ 1 = 1 ;1+0 =1 ; 1+1 = 10
example: (1101.01)2 + (11.01)2 = ?
110.1.01
+ 11.01
-----------------
10000.10
(1101.01)2 + (11.01)2 = 10000.10