进制间的转换

2019-04-16  本文已影响0人  叫兽儿

一、十六进制

“逢16进1”的进位制,一般用数字0到9和字母A到F(或a ~ f)表示,其中A ~ F表示10~15,这些称作十六进制数字。

0 1 2 3 4 5 6 7 8 9 A B C D E F
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
十六进制转十进制

16进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……

例:2AF5换算成十进制:
用竖式计算:
第 0 位: 5 * 16 0 = 5
第 1 位: F * 161 = 240
第 2 位: A * 162 = 2560
第 3 位: 2 * 163 = 8192

结果为:10997
直接计算就是:
5 * 16 0 + F * 161 + A * 162 + 2 * 163 = 10997

十进制转十六进制

例:30换算成十六进制:

二、二进制

二进制是用0和1两个数码来表示的数字,它的基数为2,“逢二进一”的进位制,借位规则是“借一当二”。
计算机内部表示数的字节单位是定长的,如 1024 512 256 128 64 32 16 8 4 2 1 (如果有小数的话就继续往右边列举,如0.5 0.25 0.125 0.0625……),所以位数不够时,高位补零,首位是0代表正整数,首位为1代表负整数。

1、加法

0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 10

2、减法

0 - 0 = 0
0 - 1 = 1
1 - 0 = 1
1 - 1 = 0

3、乘法

0 * 0 = 0
0 * 1 = 0
1 * 0 = 0
1 * 1 = 1

4、除法

0 ÷ 1 = 1
1 ÷ 1 = 1

5、拈加法

拈加法二进制是一种特殊算法,与加法类似,但不需要进位,此算法在博弈论(Game Theory)中被广泛利用。

十进制正整数转二进制

例:42换算成二进制:

十进制负整数转二进制

先将对应的正整数转换成二进制后,对二进制取反,然后对结果再加一
例:-42换算成二进制:

十进制小数转二进制,通常是用乘二取整法来获得的:

例:0.65 换算成二进制:
0.65 * 2 = 1.3 取 1,留下 0.3 继续乘2取整
0.3 * 2 = 0.6 取 0,留下 0.6 继续乘2取整
0.6 * 2 = 1.2 取 1,留下 0.2 继续乘2取整
0.2 * 2 = 0.4 取 0,留下 0.4 继续乘2取整
0.4 * 2 = 0.8 取 0,留下 0.8 继续乘2取整
0.8 * 2 = 1.6 取 1,留下 0.6 继续乘2取整
0.6 * 2 = 1.2 取 1,留下 0.2 继续乘2取整
……
一直循环,知道达到精度限制才停止(所以计算机保存的小数一般会有误差,所以在变成中,要想比较两个小数是否相等,只能比较某个精度范围内是否相等)
这时十进制的0.65,用二进制就可以表示为:0.1010011

二进制转十进制整数

例:1010换算成十进制:
先补齐位数:00001010(首位为0所以是正整数)
第 0 位: 0 * 20 = 0
第 1 位: 1 * 21= 2
第 2 位: 0 * 22 = 0
第 3 位: 1 * 23 = 8

得:10
直接计算就是:
0 * 20 + 1 * 21 + 0 * 22+ 1 * 23 = 10

二进制转十进制小数

例:0.1101换算成十进制:
第 0 位: 0 * 20= 0
第 -1 位: 1 * 2-1 = 0.5
第 -2 位: 1 * 2-2 = 0.25
第 -3 位: 0 * 2-3 = 0
第 -4 位: 1 * 2-4= 0.625

得:0.8125
直接计算就是:
0 * 20 + 1 * 2-1 + 1 * 2-2 + 0 * 2-3 + 1 * 2-4 = 0.8125

二进制与十六进制的对应关系
0 1 2 3 4 5 6 7 8 9 A B C D E F
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
十六进制转二进制

例:2AF5换算成2进制:
第0位:(5)16 = (0101) 2
第1位:(F)16 = (1111) 2
第2位: (A) 16 = (1010) 2
第3位: (2) 16 = (0010) 2

得:(2AF5)16=(0010.1010.1111.0101)2

二进制转十六进制

00111101可以这样分:
0011 | 1101(最高位不够可用零代替)
0 0 1 1 | 1 1 0 1
左半边 = 2 + 1 = 3 右半边 = 8 + 4 + 1 = 13 = D
结果,0111101就可以换算成16进制的3D。

上一篇下一篇

猜你喜欢

热点阅读