>>86
これでおkかな?
#include <stdio.h>

int rshift(int x, int n){
  int mask = 0, i;
  for(i=0; i<n; ++i) mask += 1<<sizeof(int)-i;
  if(x>0)return x >> n & ~mask;
  else return x >> n | mask;
}
int main(){
  int x,n;
  scanf("%d %d", &x, &n);
  printf("%d", rshift(x,n));
  return 0;
}