use*_*677 4 c++ binary bit-manipulation bit-shift bitwise-operators
我有一个int8_t,我想看看如果我将它向左移动超过8位会发生什么.所以这就是我做的:
int8_t x = 1;
std::cout << (x << 10);
Run Code Online (Sandbox Code Playgroud)
由于某种原因,它返回1024,就好像该类型包含足够的位来表示该数字.我认为当你移位超过给定的位时,你会在所有位中得到0(或者有符号的溢出/下溢导致未定义的行为).另外,我运行此代码给我最大数量int8_t:
std::numeric_limits<int8_t>::max(); // 127
Run Code Online (Sandbox Code Playgroud)
这种类型的最大数量是127,但向左移动可以使它甚至高于其无符号类型!这怎么可能?