这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 十进制和二进制之间的转换

共1条 1/1 1 跳转至

十进制和二进制之间的转换

高工
2014-06-12 10:36:14     打赏
十进制和二进制之间的转换

  既然一个数可以用二进制和十进制两种不同形式来表示,那么两着之间就必然有一定的转换关系。
  由十进制数的一般表示式:
  可以得到整数的一般表达式:

  将等式两边分别除以2,可得第一个余数b0,同时上式演变为:

  将等式两边再除以2,可得第二个余数b1,等式变为:

  重复上述过程直到商为0,就可由所有的余数求出二进制数。

  例题 1.3.3 将(25)D转换为二进制数。
  解:该题的解题思想是,不断地用2分解十进制整数,并将余数按得到的顺序由低位到高位排列,即可得到对应的二进制数。

  所以(18)D=(b4 b3 b2 b1 b0)B=(10010)B
  例题1.3.4 将(155)D转换为二进制数解:当要将一个很大的十进制数转换成二进制数时,采用例题1.3.3的做法很费时 ,我们可以采用另外一种方法。这种方法的思想是从需要转换的十进制数找到与之最接近的2的幂次方,并从这个十进制数中减去该2的幂次方,在剩下的余数中重复这种做法,直到余数为0。然后将所得到的这些2的幂次方与二进制数中的位权相比,相同的位标记为1,其余的为0,这样就可得到与十进制数对应的二进制数。
  现在我们来看看155这个十进制数,与2的各个幂次方数比较后可知,与155最近的是128,即27,155减去128后余数为27,而27最接近的是24,27减去16得到11,11减去8(23)得到3,3减去2(21)得到1,1减去1(20)得到0。由于在本次计算中得到2的最高幂次为7,因此可以得知对应的二进制数是一个八位的二进制数,写出这个二进制数的位权,并将其与得到的五个2的幂次方数对比后填入1,其余的用
0代替,最后得到的二进制数为10011011。

  需要指出的是,多数计算机或数字系统中只处理4、8、16、32位的二进制数据,因此,数据的位数需配成规格化的位数,如例题1.3.3种转换结果为11001,如将它配成8位,则相应的高幂项应填以0,其值不变,即11001=00011001。
  根据十进制数的一般表达式,可以得到十进制小数的表达式如下

  将等式两边分别乘以2,可得:

  比较上面两式,可以发现第一项中2的幂次已经由原来的-1变成了0,而20是整数的最低位的位权,因此可以将该项从表达式中去掉,也就是去掉了b-1。,这样也就使得剩下的数保持为纯小数。继续在表达式的两端乘以2,可得:
  这样又得到了一个20项,也就是b-2也将再次被从式子中剔除,但同时也就产生了二进制小数的前两位。重复上述过程,直到 满足要求的位数时做“四舍五入”,也就完成了从十进制小数到二进制小数的转换。
  例题8:将(0.706)D转换成误差ε不大于2-10二进制小数。
解:
  
0.706 ×2=1.412……1……b-1
  0.412 ×2=0.824……0……b-2
  0.824 ×2=1.648……1……b-3
  0.648 ×2=1.296……1……b-4
  0.296 ×2=0.592……0……b-5
  0.592 ×2=1.184……1……b-6
  0.184 ×2=0.368……0……b-7
  0.368 ×2=0.736……0……b-8
  0.736 ×2=1.472……1……b-9

  最后一位小数0.472小于0.5,根据“四舍五入”原则,则有:
0.0 ×2=0……0……b-10

所以, (0.706)D=(0.101101001)B,误差ε 2-10




关键词: 进制    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]