>>633
言語が何なのか分からないけど……
C/C++ なら P を unsigned にすれば普通に
P = (P - 1) & 0x03 ;
でならない?