以10为基数的数字到重新划分二进制/以2为基数的数字的布尔数组 我试图在C++中创建一个函数,该函数将包含一个DEN号并返回一个表示二进制/基2个数的布尔数组。我需要数组为16个项目长,任何帮助都将被感谢。谢谢。
您可以不使用任何函数直接使用,如下所示以10为基数的数字到重新划分二进制/以2为基数的数字的布尔数组 我试图在C++中创建一个函数,该函数将包含一个DEN号并返回一个表示二进制/基2个数的布尔数组。我需要数组为16个项目长,任何帮助都将被感谢。谢谢。,c++,binary-data,C++,Binary Data,您可以不使用任何函数直接使用,如下所示 #include <iostream> #include <bitset> int main(){ constexpr size_t myInt = 2; constexpr std::bitset<16> binaryRepresentaion {myInt}; std::cout << binaryRepresentaion; } 我从Berto99借了constexpr。这是一
#include <iostream>
#include <bitset>
int main(){
constexpr size_t myInt = 2;
constexpr std::bitset<16> binaryRepresentaion {myInt};
std::cout << binaryRepresentaion;
}
我从Berto99借了constexpr。这是一个很好的观点。除了位集,您可以编写自己的算法:
constexpr std::array<bool, 16> toBoolArray(unsigned int n){
auto arr = std::array<bool, 16>();
for(auto i = 0; i < 16; i++){
arr[i] = n%2;
n/=2;
}
return arr;
}
你的另一个解决方案;我看到了你的问题,通过使用位集,答案非常有效。但若你们不想使用预构建的比特流结构,不想使用更原始的操作格式,我为你们提供了一个不同的解决方案。我们有一个函数,它可以执行所有必要的操作,将任何给定的整数转换为数组格式的二进制表示形式。代码如下:
#include <iostream>
#include <cmath>
bool* theFunction(int);
int main() {
bool *p;
int denNum;
std::cout << "Enter a den number!";
std::cin >> denNum;
p = theFunction(denNum);
for (int i = 0; i < 16; i++ ){
std::cout << *p ;
p++;
}
return 0;
}
bool* theFunction(int number) {
int maxPot=2;
bool pivot;
int i=0;
static bool arr [16];
//Number's conversion to binary
while(number> 1){
while(maxPot<number){
maxPot=pow(maxPot,2);
}
maxPot=maxPot/2;
if( number>= maxPot){
arr[i]=1;
number = number - maxPot;
}
else
arr[i]=0;
i++;
}
//Loop to set 0 to leftover bits
if(i<16){
for(i;i<16;i++)
arr[i]=0;
}
//Loop for reversing the array
for(int b=0; b<8 ; b++){
pivot=arr[b];
arr[b]=arr[i];
arr[i]=pivot;
i=i-1;
}
return arr;
}
说真的,要求人们做事,不付出任何努力,你就得到了答案?唉…@Jef主要是因为没有什么可做的,因为比特集已经是标准库的一部分。我仍然觉得我们不应该回答这些问题,以免我们成为家庭作业交换。com constexpr是一个很好的选择。@Jeffrey ahah ide建议了它,所以我添加了它。那是什么ide@asmmovisual studio有半打扩展,我说不出是谁在抱怨静态断言我的VisualStudio花了大约10分钟打开ahahThank you@asmmo你帮了我这么多,这是有原因的。
0000000000000010
constexpr std::array<bool, 16> toBoolArray(unsigned int n){
auto arr = std::array<bool, 16>();
for(auto i = 0; i < 16; i++){
arr[i] = n%2;
n/=2;
}
return arr;
}
#include <iostream>
#include <cmath>
bool* theFunction(int);
int main() {
bool *p;
int denNum;
std::cout << "Enter a den number!";
std::cin >> denNum;
p = theFunction(denNum);
for (int i = 0; i < 16; i++ ){
std::cout << *p ;
p++;
}
return 0;
}
bool* theFunction(int number) {
int maxPot=2;
bool pivot;
int i=0;
static bool arr [16];
//Number's conversion to binary
while(number> 1){
while(maxPot<number){
maxPot=pow(maxPot,2);
}
maxPot=maxPot/2;
if( number>= maxPot){
arr[i]=1;
number = number - maxPot;
}
else
arr[i]=0;
i++;
}
//Loop to set 0 to leftover bits
if(i<16){
for(i;i<16;i++)
arr[i]=0;
}
//Loop for reversing the array
for(int b=0; b<8 ; b++){
pivot=arr[b];
arr[b]=arr[i];
arr[i]=pivot;
i=i-1;
}
return arr;
}