2進の加算では、桁上がりは最大でも1。
各要素のひとつ上のビットを0にしておけば、
加算時の桁上がりが確実にそこに反映される。
それを一つシフトすれば、元の各要素の位置に、
それぞれ足して2で割った値が入る。

隣り合う要素の最下位ビットが失われるので、
最大で1の誤差が生まれるが、演算速度の向上に比べれば
無視できる範囲だろう。