计算机只识别二进制,何为二进制?我们为什么生活中只用十进制?还有十六进制?如何计算,相互转换?
什么是二进制
二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。
附言:同样的,8进制就是“逢8进1”;十六进制就是“逢16进1”
如何计算呢
十进制转换为二进制
由上图计算方式,得出的余数倒过来,就是该数字对应的二进制:
十进制 | 二进制 |
---|---|
14 | 1110 |
18 | 10010 |
8 | 1000 |
12 | 1100 |
十进制转换为八进制
由上图计算方式,得出的余数倒过来,就是该数字对应的八进制:
十进制 | 八进制 |
---|---|
16 | 20 |
127 | 177 |
188 | 274 |
32 | 40 |
二进制和八进制如何转换回十进制呢?
二进制转换成十进制
按照二进制,索引从后往前,每一位数字与乘以2的当前索引次方(当前数字 * 2^索引),然后相加得出的和就是该二进制数字的十进制
1110(二进制)-> ?(十进制)
(1 * 2 ** 3) + (1 * 2 ** 2) + (1 * 2 ** 1) + (0 * 2 ** 0) = 8 + 4 + 2 + 0 = 14
10010(二进制)-> ?(十进制)
(1 * 2 ** 4) + (0 * 2 ** 3) + (0 * 2 ** 2) + (1 * 2 ** 1) + (0 * 2 ** 0)= 16 + 0 + 0 + 2 + 0 = 18
1000(二进制)-> ?(十进制)
(1 * 2 ** 3) + (0 * 2 ** 2) + (0 * 2 ** 1) + (0 * 2 ** 0) = 8 + 0 + 0 + 0 = 8
1100(二进制)-> ?(十进制)
(1 * 2 ** 3) + (1 * 2 ** 2) + (0 * 2 ** 1) + (0 * 2 ** 0) = 8 + 4 + 0 + 0 = 12
八进制转换成十进制
参照二进制算法,八进制,索引从后往前,每一位数字与乘以8的当前索引次方(当前数字 * 8^索引),然后相加得出的和就是该八进制数字的十进制
20(八进制)-> ?(十进制)
(2 * 8 ** 1) + (0 * 8 ** 0) = 16 + 0 = 16
177(八进制)-> ?(十进制)
(1 * 8 ** 2) + (7 * 8 ** 1) + (7 * 2 ** 0)= 64 + 56 + 7 = 127
274(八进制)-> ?(十进制)
(2 * 8 ** 2) + (7 * 8 ** 1) + (4 * 2 ** 0)= 128 + 56 + 4 = 188
40(八进制)-> ?(十进制)
(4 * 8 ** 1) + (0 * 8 ** 0) = 32 + 0 = 32
负数的二进制?
以上通过两组数字知道八进制和二进制,二进制和十进制 如何相互转换,十六进制十四进制应该知道如何计算了。
但是发现上面计算的都是正数,那负数的二进制该如何计算?