>>441は xが正でyが負のときおかしい。

かけ算はいってるけど

int func(int a, int b){
int absa = (a >> 31) ^ a;
return (a + absa*b + (b>>1)) / b - absa;
}