二、八、十、十六进制转换
前言
在计算机中,数字是以一串“0”或“1”的二进制代码来表示的,这是计算机唯一能识别的数据形式。数据必须转化成二进制代码来表示,也就是说,所有需要计算机加以处理的数字、字母、文字、图形、图像、声音等信息(人识数据)都必须采用二进制编码(机识数据)来表示和处理。
r进制转十进制
按权展开,如下:
a表示数值,r表示进制,n在整数部分表示数值a后有几位数,小数部分以-1开始依次递增数值a所在位数。
二进制转十进制
以小数为例,比如:1101.101(B)转换为十进制(忽略数值为0的计算):
1101.101(B) = 1 * 23 + 1 * 22 + 1 * 20 + 1 * 2-1 + 1 * 2-3= 13.625(D)
八进制转十进制
比如:273(O)转换为十进制:
273(O) = 2 * 82 + 7 * 81 + 3 * 8 0 = 187(D)
十六进制转十进制
比如:28B(H)转换为十进制:
28B(H) = 2 *162 + 8 * 161 + 11 * 160 = 651(D)
十进制转r进制
- 整数部分:除以r取余数,直到商为0,余数从右到左排列。
- 小数部分:乘以r取整数,整数从左到右排列。
十进制转二进制
以上面案例进行讲解:13.625(D)
先算整数部分:
13/2=6…余1
6/2=3…余0
3/2=1…余1
1/2=0…余1
从下到上结果为1101。
再算小数部分:
0.625 * 2=1.25…取整1
0.25 * 2=0.5…取整0
0.5 * 2=1…取整1
从上到下结果为101。把两个结果拼起来,最后结果为:1101.101(B)。
十进制转八进制
之前案例:187(D):
整数部分:
187/8=23…余3
23/8=2…余7
2/8=0…余2
从下到上结果为273(O)。
十进制转十六进制
之前案例:651(D):
整数部分:
651/16=40…余11
40/16=2…余8
2/16=0…余2
从下到上结果为28B(H)
八进制转二进制
每个数值对应三位的二进制:
267(O) = 010 110 111(B)
十六进制转二进制
每个数值对应四位的二进制:
29A(H) = 0010 1001 1010(B)
二进制转八进制
每个二进制三个为一组。需注意小数分组顺序:
- 整数部分:从右向左进行分组,不足补0。
- 小数部分:从左向右进行分组,不足补0。
11011001.10101(B) = 011 011 001.101 010 = 331.52(O)
二进制转十六进制
每个二进制四个为一组:
111011001.10101(B) = 0001 1101 1001.1010 1000 = 1D9.A8(H)