>>890 あえてPascalで書くと

function setbits( x,p,n,y:Integer):Integer;
begin
Result:=
 (
  (
  (  (x shr p) //xのpから始まる
  ) xor y)    //yの
  and ((1 shl n)-1) //右端のnビットに
 )xor y;         //セットした
end;