64bit shift problem
64-bit, c++
Solution
When you shift a value by more bits than word size, it usually gets shifted by `mod word-size`. Basically, shifting it by 64 means shifting by 0 bits which is equal to no shifting at all. You shouldn't rely on this though as it's not defined by the standard and it can be different on different architectures.
Problem
Why this code does not write 0 as a last element but 18446744073709551615? (compiled with g++) ``` #include <iostream> using namespace std; int main(){ unsigned long long x = (unsigned long long) (-1); for(int i=0; i <= 64; i++) cout << i << " " << (x >> i) << endl; cout << (x >> 64) << endl; return 0; } ```