【发布时间】:2013-03-24 15:06:21
【问题描述】:
我有一个int8_t,我想看看如果我将它向左移动超过 8 位会发生什么。所以这就是我所做的:
int8_t x = 1;
std::cout << (x << 10);
由于某种原因,这会返回 1024,就好像该类型包含足够的位来表示该数字一样。我认为当你移动超过给定的位时,你会在所有位中得到 0(或有符号的溢出/下溢,这会导致未定义的行为)。另外,我运行了这段代码来给我int8_t的最大数量:
std::numeric_limits<int8_t>::max(); // 127
这种类型的最大数量是 127,但是将它向左移动可以使它甚至高于它的无符号类型!这怎么可能?
【问题讨论】:
标签: c++ binary bit-manipulation bitwise-operators bit-shift