我需要将32位整数放入列表中。问题是,我似乎无法正确填写该列表。
实施例。我需要从中得到:01000100011100111111000000000000
:list[0]=0
,list[1]=1
,list[2]=0
,list[3]=0
等。
这个号码是通过标准输出给我的整数。
以下是我的观点:
int binary;
cin << binary;
int *list = new int [32];
for (int i = 31; i >= 0; i--) {
list[i] = binary % 10;
binary /= 10;
}
for (int i = 0; i < 32; i++) {
cout << list[i];
cout << endl;
}
让我知道我做错了什么。
答案 0 :(得分:4)
以下循环导致越界数组访问:
for (int i = 4; i >= 0; i--) {
list[i] = ...
list
的元素从0到3编号。
此外,以下内容如下:
list[i] = binary % 2;
binary /= 10;
这两个数字应该都是2
或两者都是10
。
答案 1 :(得分:2)
这部分:
int *list = new int [4];
创建一个从0到3索引的数组,并且您稍后尝试访问列表[4]。
答案 2 :(得分:1)
你应该除以2并从索引开始为3
for(i=3;i>=0;i--)
{
list[i]=binary%2;
binary/=2;
}
这是正确的
答案 3 :(得分:1)
使用std::bitset
。
#include <bitset>
int main() {
std::bitset<32> bits("01000100011100111111000000000000");
}