2009年9月23日星期三

[PerlChina] Re: 在我遇到的这种情况下散列和数组哪个快?

bit运算应该是这样:
2位表示一个字符
00 A
01 G
10 T
11 C

这样下来一个15个字符的序列一共30位,一个int足矣,必用字符串省很多内存

取各个位
如:
$char = $key & 0b000011;
$char = $key & 0b001100;
$char = $key & 0b110000
...
取出每个位以后再做判断
$char == 0;
$char == 1;
$char == 2;
$char == 4;





2009/9/23 空格 <ribozyme2004@gmail.com>
我昏了,之前我把00,01,10,11理解成十进制的数字了。
就是说,
当取到一个字串赋给$key之后,
$key=~s{A}{0}g;
$key=~s{G}{1}g;
$key=~s{T}{2}g;
$key=~s{C}{3}g;
再用 exists(%hash{$key}); 检查是否有特定键值。是这样的吧?


On 9月23日, 上午11时17分, msmouse <msmo...@gmail.com> wrote:
> 就是这个意思。前面agentzh说:
> "事先约定 A,T,G,C 分别对应 00, 01, 10, 11,即 2 个比特的数值。"
> 即用两个位表示一个字符,15个字符即是30位。30个二进制位即是15个4进制位
> ----------------------------------



--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
 要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
 要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---

没有评论: