怎样将输入的一个数的各个位存到一个数组中并且按顺序输出c++
时间: 2024-10-03 17:01:38 浏览: 34
多维数组的存储形式-C++课件,,一本书的ppt
在C++中,如果你想将一个整数的每一位存储到一个数组中并按顺序输出,可以使用位运算或者字符串转换的方法。这里是一个简单的例子,我们将数字从右向左依次提取每一位,并存储到数组中:
```cpp
#include <iostream>
#include <bitset> // 如果要处理无符号整数
// 如果处理的是无符号整数
std::vector<unsigned char> storeBitsAsArray(unsigned int num) {
std::vector<unsigned char> bitArray(32, 0); // 预计最多32位,实际取决于num的大小
for (int i = 0; i < 32; ++i) { // 32位表示无符号int的最大位数
bitArray[i] = static_cast<unsigned char>(num & 1);
num >>= 1; // 右移一位以便获取下一位
}
return bitArray;
}
// 如果处理的是有符号整数(如int)
std::vector<bool> storeBitsAsArray(int num) {
std::vector<bool> bitArray(sizeof(int) * 8, false); // sizeof(int)通常为4,8位
for (int i = 0; i < sizeof(int) * 8; ++i) {
bitArray[i] = bool(num & 1);
num >>= 1;
}
return bitArray;
}
void printBitArray(const std::vector<bool>& bitArray) {
for (bool bit : bitArray) {
std::cout << bit;
}
std::cout << '\n';
}
int main() {
unsigned int testNumber = 1234567890;
std::vector<unsigned char> bits = storeBitsAsArray(testNumber);
std::cout << "Unsinged integer bit array: ";
printBitArray(bits);
int signedTestNumber = -12345;
std::vector<bool> signedBits = storeBitsAsArray(signedTestNumber);
std::cout << "Signed integer bit array: ";
printBitArray(signedBits);
return 0;
}
```
运行此程序,你会看到数字的二进制形式被分别存储在两个数组中,并按顺序输出。
阅读全文