Арифметическое смещение вправо дает фиктивный результат?
Я должен быть абсолютно сумасшедшим здесь, но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
Я сумасшедший? Что может происходить?