Арифметическое смещение вправо дает фиктивный результат?

Я должен быть абсолютно сумасшедшим здесь, ноgcc 4.7.3 на моей машине дает самый абсурдный результат. Вот точный код, который я тестирую:

#include <iostream>

using namespace std;

int main(){
  unsigned int b = 100000;
  cout << (b>>b) << endl;
  b = b >> b;
  cout << b << endl;
  b >>= b;
  cout << b << endl;
  return 0;
}

Теперь любое число, смещенное вправо, должно привести к0 (n/(2^n) == 0 с участиемцелочисленное деление, n>1, а такжеположительная / без знака), но как-то вот мой вывод:

100000
100000
100000

Я сумасшедший? Что может происходить?

Ответы на вопрос(2)

Ваш ответ на вопрос