开发者社区> 问答> 正文

怎么学二进制数?

希望大家给个好答案!谢谢了先!

展开
收起
知与谁同 2018-07-17 10:02:39 2069 0
3 条回答
写回答
取消 提交回答
  • 12535
    1 10 11 100...这就是2进制中的1 2 3 4...意思就是说够了2就得向前进一位,就想十进制一样够了十就得进一位.
    2019-07-17 22:57:06
    赞同 展开评论 打赏
  • 一、二进制数的表示法
    二进制是计算技术中广泛采用的一种数制。二进制数是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。二进制数也是采用位置计数法,其位权是以2为底的幂。例如二进制数110.11,其权的大小顺序为2^2、2^1、2^0、2^-1、2^-2。对于有n位整数,m位小数的二进制数用加权系数展开式表示,可写为:
    (a(n-1)a(n-2)…a(-m))2=a(n-1)×2^(n-1)+a(n-2)×2^(n-2)+……+a(1)×2^1+a(0)×2^0+a(-1)×2^(-1)+a(-2)×2^(-2)+……+a(-m)×2^(-m)
    二进制数一般可写为:(a(n-1)a(n-2)…a(1)a(0).a(-1)a(-2)…a(-m))2。

    注意:
    1.式中aj表示第j位的系数,它为0和1中的某一个数。
    2.a(n-1)中的(n-1)为下标,输入法无法打出所以用括号括住,避免混淆。
    3.2^2表示2的平方,以此类推。

    【例1102】将二进制数111.01写成加权系数的形式。
    解:(111.01)2=(1×2^2)+(1×2^1)+(1×2^0)+(0×2^-1)+(1×2^-2)

    二、二进制数的加法和乘法运算

    二进制数的算术运算的基本规律和十进制数的运算十分相似。最常用的是加法运算和乘法运算。

    1. 二进制加法

    有四种情况: 0+0=0
    0+1=1
    1+0=1
    1+1=0 进位为1

    【例1103】求 (1101)2+(1011)2 的和
    解: 1 1 0 1
    + 1 0 1 1
    1 1 0 0

    2. 二进制乘法

    有四种情况: 0×0=0
    1×0=0
    0×1=0
    1×1=1

    【例1104】求 (1110)2 乘(101)2 之积

    解: 1 1 1 0

    × 1 0 1

    1 1 1 0

    0 0 0 0

    + 1 1 1 0

    1 0 0 0 1 1 0

    -------------------------

    买本书,推荐“二进制入门”

    2019-07-17 22:57:06
    赞同 展开评论 打赏
  • 可以通过分析熟悉的十进制来学习二进制,以致其他任意进制
    我们熟悉的十进制是这样的:个位的基数是1,个位上出现的数字有几就代表这个数中包含几个1,而十位的基数是10,是个位(右边位)乘以10得到的(十进制),十位上出现的数字是几,则这个数中包含几个10,之后类推百位是十位乘以10,...,比如2015,包含2个1000,0个100,1个10,5个1,表达式为2*1000+0*100+1*10+5*1;那么小数呢,小数点后面第1位是0.1(即1/10),是个位除以10得到的,小数点后面第2位是前一位(左边位)除以10得到的,比如:3.14=3*1+1*1/10+4*1/100=3*1+1*0.1+4*0.01换句话说3.14包含3个1,1个0.1和4个0.01。
    好相对着来学二进制,个位还是1,这个所有我们要学的进制都不会变,向左一位是个位乘以2等于2,再写一位等于前一位再乘以2;小数点每位是前一位(左边的)除以2。则二进制每位上的基数可以写出来:
    16 8 4 2 1. 1/2 1/4 1/8 1/16或者写成16 8 4 2 1. [0.5][0.25][0.125][0.0625]
    有了以上这串数字,二进制数转成十进制就简单了:比如转换1010.0101成十进制,则我们写出二进制基数,小数点前后各写4位,从个位分别向前、向后写
    8 4 2 1.[0.5][0.25][0.125][0.0625] 然后将要转换的数按照位对齐写在下面一行
    1 0 1 0. 0 1 0 1
    然后上下做乘法,结果左右做加法(回忆一下十进制的算法)=1*8+0*4+1*2+0*1+0*0.5+1*0.25+0*0.125+1*0.0625=8+2+0.25+0.0625=10.3125
    这个算法使用于所有进制噢,只要第1行的基数改写一下,乘以或除以2的地方改成乘以或除以n,n进制的数都能转换成十进制啦。这个应该不用记忆任何公式、不用进行指数运算,从个位1开始就都能笔算了。

    再看反着转换,从十进制转二进制,举例:45.625转二进制,还是先写二进制基数,整数部分写到比45大为止,小数部分不用写
    64 32 16 8 4 2 1.
    0 1 0 1 1 0 1.

    现在开始计算:先转换整数部分
    用45除以(整除)最高位的64得到商和余数=45/64=0[45],将商0写到64这位下面
    用上步计算结果的余数继续计算=45/32=1[13],将商1写到32这位下面
    继续,13/16=0[13],13/8=1[5],5/4=1[1],1/2=0[1],1/1=1[0],转换到余数等于0为止,如果还有整数位没有转换都填0;接着转换小数,用要转换的数的小数部分开始
    0.625*2(二进制所以乘以2)=1.25,则我们的得数有了小数点后第1位,就是刚才这步运算的整数部分1[101101.1],接着用上步结果的小数部分继续乘以2=0.25*2=0.5[101101.10],0.5*2=1.0[101101.101],计算到结果小数部分为0时停止或者达到要求的位数时停止。
    十进制45.625转换成二进制为101101.101
    同样方法可转换十进制到任意n进制,只是将上述方法中乘以2、除以2的地方换成乘以n和除以n即可。
    2019-07-17 22:57:06
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
阿里云MaxCompute百问百答 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载