I faced with some strange problem. After declaring uint32_t variable with -1
I got 4294967295
, that's right. So binary it will looks like
1111 1111 1111 1111 1111 1111 1111 1111
It's 32 bits. But if i'am trying to execute following code, I am taking unexpected behavior.
uint32_t data = (uint32_t) -1;
std::cout << "Before: " << data << std::endl;
std::cout << "After << 31: " << (data >> 31) << std::endl;
std::cout << "After << 32: " << (data >> 32) << std::endl;
Results are:
Before: 4294967295
After << 31: 1
After << 32: 4294967295
I am using MinGW w64