遗传算法入门--连载3

        连载第3篇


             数字染色体 - 二进制数串

 

3.2二进制数速成
(A Quick Lesson in Binary Numbers)

当进入更深层的学习之前,我必需确保你对二进制记数系统的理解。如果你已经知道二进制记数的工作原理,可以跳过这一小节。如果你还不了解,就让我来启发你...  

我认为了解二进制数(基为2的数)的最容易的方法,就是首先查看一下十进制数:你为什么使用十进制数字(基为10的数)和怎样使用十进制计数?  

人们通常相信,人类之所以采用基数为十的记数法来计数,是因为我们的双手共有十个手指的缘故。设想我们的一个祖先,不妨称他为Ug,几十万年前在计算一个猛犸群中猛犸的个数。Ug利用两个拳头来开始计算,当他每看到一个猛犸,就伸出一个手指;这样1个、2个...地继续下去,直到他所有的手指都被用上为止;这时他就知道他已经算到10个猛犸。但因猛犸群中包含的猛犸远远超过10个,Ug不得不再想一种方法来计算更大的数目。他狠抓了一下他的脑袋,就产生了一个想法:叫他的一个朋友Frak来帮忙。Ug想到用Frak的一个手指来代表他计算到的那10个猛犸,然后他自己的手指就得到解脱,可重新开始用来计算第11、12、13个猛犸,等等,直到20,这时就需要使用Frak的另一个手指。你能看出,采用这样的过程,Ug和Frak最多可以计算到110个猛犸(那真是一桩了不起的奇观,不是吗?),但为了统计出更多的猛犸数目,他们就不得不去招募另一位朋友了。  

当人们最终学会了怎么写出数字时,就是使用类似方法来完成的。为了表示基数为10的数字,你创建一系列的列(columns),每一列代表人的一双手,例如,下面4列是代表4双手:

1000位
100位
10位
个位
    

  因此,要从1计数到15,你先在个位(列)由0开始不断递增,直到9,然后,因个位已不能再增,你就在10位记1,并从新在个位由0开始不断增加,直到如下结束:

1000位
100位
10位
个位
  
1
5

     数字15由一个十位和5个个位组成。(我知道,你听到这些会感到非常显然,但是这种详细的分析是必要的。)你能看到,二进制数系(或不管哪一种进制数系)都用同样的方式工作。但二进制计数时不用10个数字,而只用2个[译注:原文误为1个],其中一个是0,另一个是1。这样,当你在写2进制数时,表示数的列(在2进制数人们称作bit,中文叫)。

16
8
4
2
个位
     
  现在你就可以来计算 15 。首先,你在个位(列)加 1 ,得:
16
8
4
2
个位
    
1
这时,因为你已经没有更大的数字可以用了(请记住, 2 进制数中最大的数是 1 ),你必须增加个位左边的那个列,并将个位数从新变为 0 ,因此数字 2 的形式如下:
16
8
4
2
个位
   
1
0
数字 3 的形式为:
16
8
4
2
个位
   
1
1
数字 4 的形式为:
16
8
4
2
个位
  
1
0
0
<![endif]> 等等,直到数字 15
16
8
4
2
个位
 
1
1
1
1
   这就是计算 15 所要做的全部过程了。至此,你应该能够转换十进制数为二进制,或反过来,把二进制转换为十进制了。我同时必须指出,二进制数字也常常写成一组有固定长度的位,特别当它与计算机联系起来讨论时如此。这就是为什么处理器常被说成是 8 位、 I6 位、 32 位、或 64 位的原因。这意味,如果你要把 15 写成 8 位的二进制,则你就要写成下面这样的形式,其中高位都是0,但也要在前面写出来,以使整个长度达到8:
 
   00001111  

为了确保你理解这一概念,作为一个练习,在你继续进入下一节以前,试回答下列问题(答案附在本章最后):  

1.把十进制27转换为二进制。

2.把二进制数10101转换为十进制。  

3.把十进制数135表示成为一个8位的二进制数。  

一点不难吧?既然你对二进制数有了一个初步概念,下面就让我们来讨论令人更加激动的内容吧...

转载于:https://my.oschina.net/dake/blog/196789

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值