ビットフラグが9個あり、1個だけビットが立っている部分を検出 その2

2つの加算は

s1 = b0 ^ b1;
s0 = ~(b0 | b1);

でできる。論理演算の回数は3回だ。
したがって、8個分の加算は 8*3 = 24回
で、加算したものどうし(s01, s11, s02, s12)の加算は

s1 = (s01 & ~s12) | (~s11 & s02);
s0 = s01 & s02;

で可能だ。論理演算の回数は6回だ。
これを3回繰り返せば、8個分の加算が出来る。
合計は 24 + 6*3 = 32回
最後に s1 = (s1 & ~x2) | (s0 & x2) で残ったビットを足せばいいので、全部で論理演算回数は36回となる。