v=0;
v=~v;
v=v>>1;
v=~v;

ならunsigned shortやunsigned charでも最上位が1になるよ。