美文网首页
进制间的转换

进制间的转换

作者: 叫兽儿 | 来源:发表于2019-04-16 15:54 被阅读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。

    相关文章

      网友评论

          本文标题:进制间的转换

          本文链接:https://www.haomeiwen.com/subject/buebwqtx.html