我正在做一个int的bithift操作,并且惊讶于它没有像预期的那样出现.
int i, res;
i = 0x80000000;
res = i>>1; //results in 0xc0000000
res = (unsigned int) i>>1; //results in 0x40000000
Run Code Online (Sandbox Code Playgroud)
怎么有可能一个整数位的移位只能工作到第31位?
我的问题是,即使我使用operator []来获取我的向量内容,向量也总是调用大小函数(根据我的分析工具和时间测量).因此,由于我的C++应用程序非常关键(小于0.1ms),我认为我最好将其转换为数组,但到目前为止我无法弄清楚.实际矢量看起来像:
std::vector<std::pair<double*,std::pair<double*,int*>>>
Run Code Online (Sandbox Code Playgroud)