Arithmetische Rechtsverschiebung ergibt falsches Ergebnis?
Ich muss hier absolut verrückt sein, abergcc 4.7.3
auf meiner Maschine gibt das absurdeste Ergebnis. Hier ist der genaue Code, den ich teste:
#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;
}
Nun sollte jede Zahl, die von selbst nach rechts verschoben ist, dazu führen0 (n/(2^n) == 0
mitganzzahlige Division, n>1
, undpositiv / unsigniert), aber irgendwie ist hier meine Ausgabe:
100000
100000
100000
Bin ich verrückt? Was könnte möglicherweise los sein?