1

我需要将 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;
}

让我知道我做错了什么。

4

4 回答 4

4

以下循环导致越界数组访问:

for (int i = 4; i >= 0; i--) {
    list[i] = ...

list的元素从零到三编号。

此外,以下内容看起来很可疑:

list[i] = binary % 2;
binary /= 10;

这两个数字应该都是2或者都是10

于 2013-04-28T18:45:39.453 回答
2

这部分: int *list = new int [4];创建一个索引从 0 到 3 的数组,稍后您将尝试访问 list[4]。

于 2013-04-28T18:47:48.487 回答
1

你应该除以 2 并从索引 3 开始

for(i=3;i>=0;i--)
{
    list[i]=binary%2;
    binary/=2;
}

这将是正确的

于 2013-04-28T18:47:15.190 回答
1

使用std::bitset.

#include <bitset>
int main() {
    std::bitset<32> bits("01000100011100111111000000000000");
}
于 2013-04-28T19:21:34.133 回答