Loading

进制转换:一篇就够了

2进制(BIN),8进制(OCT / octonary),10进制(DEC / decimal),16进制(HEX / hexadecimal)


一、任意进制 → 10进制

  • [例] (241)16 转换为10进制:
    = 2*162 + 4*161 + 1*160
    = 2*256 + 4*6 + 1
    = 537
  • [例] (110)2 转换为10进制:
    = 1*22 + 1*21 + 0*20
    = 4 + 2 + 0
    = 6

二、2进制与8/16进制互转

  • [例] (123)16 转换为2进制:
    1. 首先按位转换:1 -> 0001、2 -> 0010、3 -> 0011
    2. 最后拼接得:000100100011
  • [例] (10100011)2 转换为8进制:
    1. 首先按每3位分割转换为对应的八进制数:010 -> 2、100 -> 4、011 -> 3
    2. 最后拼接得:243
  • [例] (10 1010 0011)2 转换为16进制:
    1. 首先按每4位分割转换为对应的十六进制数:0010 -> 2、1010 -> A、0011 -> 3
    2. 最后拼接得:2A3
  • 记住下表
    8进制位 对应的2进制 16进制位 对应的2进制
    0 000 0 0000
    1 001 1 0001
    2 010 2 0010
    3 011 3 0011
    4 100 4 0100
    5 101 5 0101
    6 110 6 0110
    7 111 7 0111
    8 1000
    9 1001
    A 1010
    B 1011
    C 1100
    D 1101
    E 1110
    F 1111

三、10进制 → 2进制(8进制、16进制)

除2取余法:不断除以2(或 8、16),保留余数,商为0时不再继续除,将所有余数倒序排列即为所求得2(8、16)进制数

  • [例] 求 (13)10 的 2进制表示:
    13 / 2 商 6 余 1
    6 / 2 商 3 余 0
    3 / 2 商 1 余 1
    1 / 2 商 0 余 1
    故13对应得2进制数为 1101
  • [例] 求 (3658)10 的 16进制表示
    3658 / 16 商 216 余 2
    216 / 16 商 13 余 8
    13 / 16 商 0 余 13(D)
    故 3458 对应的16进制为 D82

*可以选择记住下表:

10进制数 对应2进制形式
127 0111 1111
128 1000 0000
192 1100 0000
224 1110 0000
240 1111 0000
248 1111 1000
252 1111 1100
254 1111 1110
255 1111 1111
32767 (short 类型所能表示的最大正数) 0111 1111 1111 1111
32768 ‭1000 0000 0000 0000‬
65535 (IPv4 的最大端口号) 1111 1111 1111 1111 (2字节,16位)
65536 0001 0000 0000 0000 0000
posted @ 2020-08-19 15:09  x0c  阅读(837)  评论(0编辑  收藏  举报