您如何理解H264规范中的这一行

时间:2013-10-07 16:36:33

标签: c bit-manipulation h.264

在H264(mpeg4第10部分AVC)规范here中,我们可以阅读第59页的以下内容(为了清楚地解决SO问题,稍微简化了一下):

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

我想知道如何解释if语句的内容。看看其他实现,似乎要做的测试是检查它是否为0。它似乎更有意义,否则当truei8x8时,条件只能评估为0。你是怎么理解的?

1 个答案:

答案 0 :(得分:1)

正在测试是否设置了特定位。 1&lt;&lt;&lt; i8x8取一个“1”位并将其移位可变数量的空格,然后将其移至CodedBlockPatternLuma以查看是否设置了位。如果模式是10101010且i8x8是2,则模式与100进行AND运算,因此10101010&amp; 00000100 = 00000000,该位未设置。 如果pattern为01010101,并且与00000100进行AND运算,那么该位将被设置,这将是真的。