进制

进制

NULL–2020.03.13整理笔记

进制(System)

二进制:Binary system,简写BIN。

  • 写作:10010B、(10010)2

八进制:Octal number system,简写OCT。

  • 写作:22O或者22Q、(22)8

十进制:Decimal system,简写DEC。

  • 写作:18D、(18)10

十六进制:Hexadecimal,简写HEX。

  • 写作:12H、(12)16

在C语言中,整数有三种表示方法,分别是八进制、十进制、十六进制,这三种在使用中是不能用后缀O、D、H的。

十进制不需要前缀,如:11、23、35
八进制需要以0开头,如:015、026、077
十六进制以0X或者0x开头,如:0xFF、0xB45、0xFF91


重要概念:位值(权值)(由位置决定数值大小的值)

Value = (S)R = ∑ i = − m n \sum_{i=-m}^n i=mnKi × \times ×Ri Ki ∈ \in {0,1…,R-1}

n = 整数位数-1 m = 小数位数

R:数制的基数 Ri:权(由位置决定的值)

权的概念:整数部分从右往左i = 0,1,2,3…;小数部分从左往右i = -1,-2,-3…

  • 二进制(Binary)[ˈbaɪnəri]

    • B转O

      • 以小数点为界,分别向左、向右每三位一组进行分割,不足三位补0。写出每三位对应的八进制数。

        例:1001010.1011B = 001 001 010 . 101 100B = 1 1 2 . 5 4Q

    • B转D

      • 整数部分:按权展开法

        例:11010B = 1 * 24 + 1 * 23 + 0 * 22 + 1 * 21 + 0 * 20 = 26D

      • 小数部分:按权展开法

        例:.1010B = 1 * 2-1 + 0 * 2-2 + 1 * 2-3 + 0 * 2-4 = 0.625D

    • B转H

      • 以小数点为界,分别向左、向右每四位一组进行分割,不足四位补0。写出每四位对应的十六进制数。

        例:1001010.1011B = 0100 0101 . 1011B = (4 5 . B)16

  • 八进制(Octal)['ɔktl]

    • O转B

      • 以小数点为界,分别向左、向右每一位写为三位二进制数。

        例:112.54Q = 001 001 010 . 101 100B = 1001010.1011B

    • O转D

      • 整数部分:按权展开法

        例:112Q = 1* 82 + 1* 81 + 2 * 80 = 74D

      • 小数部分:按权展开法

        例:.54 = 5 * 8-1 +4 * 8-2 = 0.6875D

    • O转H

      • 先转为二进制,然后二进制转十六进制。

        例:112Q =001 001 010B = 45H

  • 十进制(Decimal)[ˈdesɪml]

    • D转B

      • 整数部分:连除法,不断除以基数2,倒序去余数(十进制整数可以精准转换为二进制整数)

        例:

        75 / 2 =37…余1

        37 / 2 = 18…余1

        18 / 2 = 9…余0

        9 / 2 = 4…余1

        4 / 2 = 2…余0

        2 / 2 = 1…余0

        1 / 2 = 0…余1

        75D = 1001011B

      • 小数部分:连乘法,不断乘以基数2,正序取整数部分进位(一般情况十进制小数不能用有限二进制表示,实际计算时,根据精度要求取m位)

        例:

        0.6531 * 2 = 1.3062…1

        0.3062 * 2 = 0.6124…0

        0.6124 * 2 = 1.2248…1

        0.2248 * 2 = 0.4496…0

        0.4496 * 2 = 0.8992…0

        0.6531D ≈ \approx 0.10100B

    • D转O

      • 整数部分:连除法,不断除以基数8,倒序去余数

        例:

        75 / 8 = 9…余3

        9 / 8 = 1…余1

        1 / 8 = 0…余1

        75D = 113Q

      • 小数部分:连乘法,不断乘以基数8,正序取整数部分进位

        例:

        0.6531 * 8 = 5.2248…5

        0.2248 * 8 = 1.7984…1

        0.7984 * 8 = 6.3872…6

        0.3872 * 8 = 3.0976…3

        0.0976 * 8 = 0.7808…0

        0.6531D ≈ \approx 0.51630Q

      • 也可以先转为二进制然后再转八进制(可能更快一点)

    • D转H

      • 整数部分:连除法,不断除以基数16,倒序去余数

        例:

        75 / 16 = 4…余11

        4 / 16 = 0…余4

        75D = (4B)16

      • 小数部分:连乘法,不断乘以基数16,正序取整数部分进位

        例:

        0.6531D * 16 = 10.4496…A

        0.4496 * 16 = 7.1936…7

        0.1936 * 16 = 3.0976…3

        0.0976 * 16 = 1.5616…1

        0.5616 * 16 = 8.9856…8

        0.6531D ≈ \approx (0.A7318)16

      • 也可以先转为二进制然后再转十六进制(可能更快一点)

  • 十六进制(Hexadecimal)[ˌheksəˈdesɪml]

    • H转B

      • 以小数点为界,分别向左、向右每一位写为四位二进制数。

        例:42.24H = 0100 0010 . 00100100B

    • H转O

      • 先转为二进制,然后二进制转八进制。

      例:45H = 0100 0101B = 001 000 101B = 105Q

    • H转D

      • 整数部分:按权展开法

        例:(EB6)16 = E * 162 + B * 161 + 6 * 160 = 3766D

      • 小数部分:按权展开法

        例:(.D8)16 = D * 16-1 + 8 * 16-2 = 0.84375D


END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值