0

ここで入手可能なH264(mpeg4 part 10 AVC)仕様では、59ページで以下を読むことができます(SOに関する質問を明確にするために少し簡略化されています):

for(i8x8 = 0; i8x8 < 4; i8x8++) 
  for(i4x4 = 0; i4x4 < 4; i4x4++) 
     if(CodedBlockPatternLuma & (1 << i8x8))
       doSomething()

発言の内容をどう解釈するか悩んでいますif。他の実装を見ると、行われるテストは、それが 0 かどうかをチェックすることのようです。trueそうでなければ、条件はwhen i8x8isにしか評価できません0。それをどう理解しますか?

4

1 に答える 1

1

特定のビットが設定されているかどうかをテストしています。1 << i8x8 は、「1」ビットを取り、可変数のスペースを左にシフトしてから、ビットが設定されているかどうかを確認するために CodedBlockPatternLuma に &'ing します。パターンが 10101010 で i8x8 が 2 の場合、パターンは 100 と AND 演算されるため、10101010 & 00000100 = 00000000 となり、ビットは設定されません。パターンが 01010101 で、00000100 との AND をとると、ビットが設定され、真になります。

于 2013-10-07T16:43:05.950 に答える