>>961
1) b - a + (UINT_MAX+1)
2) 左右シフトともに負の値のシフトに関して未定義。
  いきなりエラーで落ちても文句は言えない。

C規格の専用スレもあるので活用してください。