C++ 了解int存储多长时间?
我正在运行以下程序:(URL:) 现在,当我使用N=2^36时,这意味着第36位应该是1,而不是别的,但为什么程序会给我位置31和63呢?我的程序有什么问题吗C++ 了解int存储多长时间?,c++,C++,我正在运行以下程序:(URL:) 现在,当我使用N=2^36时,这意味着第36位应该是1,而不是别的,但为什么程序会给我位置31和63呢?我的程序有什么问题吗 我有一个观察结果,如果我们使用N=2^{exp},其中exp>=32,它总是给出设置位为31和63的位置。谁能解释一下为什么会这样 如果int为32位长,11@MikeCAT谢谢你的帮助。@MikeCAT:请不要使用评论部分来获得答案。如果你不想要这个代表,你可以通过赏金来回馈社区。重要的是要知道,并不是所有的转变都有明确的行为。对于一种
我有一个观察结果,如果我们使用N=2^{exp},其中exp>=32,它总是给出设置位为31和63的位置。谁能解释一下为什么会这样 如果
int
为32位长,11@MikeCAT谢谢你的帮助。@MikeCAT:请不要使用评论部分来获得答案。如果你不想要这个代表,你可以通过赏金来回馈社区。重要的是要知道,并不是所有的转变都有明确的行为。对于一种类型来说,移位太多,最终会导致行为不明确。
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
long long int N=pow(2, 36);
cout << N <<endl;
int count = 0;
cout << "Positions where bits are set : " << endl;
for(int j=0; j<sizeof(long long int)*8; ++j){
if(N&(1<<j)){
++count;
cout << j << endl;
}
}
return 0;
}
68719476736
Positions where bits are set :
31
63