Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以10为基数的数字到重新划分二进制/以2为基数的数字的布尔数组 我试图在C++中创建一个函数,该函数将包含一个DEN号并返回一个表示二进制/基2个数的布尔数组。我需要数组为16个项目长,任何帮助都将被感谢。谢谢。_C++_Binary Data - Fatal编程技术网

以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; 
}