0,1からなる文字列を符号化して塩基にするコードを見ているのですが,以下に示すswith文の条件がよくわかりません.
2進数で表して0ならA,1ならC,2ならばG,3ならばTにするという考え方は理解できるのですが,なぜこの書き方でそうなるのかが分かりません.
C
1 unsigned char c1, c2, res; 2 for(int i=0; i<ORGDATA_LEN; i+=2){ 3 c1 = getc(ofp); 4 c2 = getc(ofp); //ofpから一文字読み取り 5 6 switch( ( (c1 & 0x1) << 7) >> 6 | ( c2 & 0x1) ){ 7 case 0: 8 res = BASE_A; 9 break; 10 case 1: 11 res = BASE_C; 12 break; 13 case 2: 14 res = BASE_G; 15 break; 16 case 3: 17 res = BASE_T; 18 break; 19 } 20 fputc(res, efp); 21 }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/05 02:25
2020/12/05 02:50
2020/12/05 06:03
2020/12/05 08:30
2020/12/07 04:38
2020/12/07 09:14
2020/12/07 10:07