簡體   English   中英

從C ++中的數字和位掩碼生成數字數組

[英]Generate an array of numbers from a number and a mask of bits in C++

我想創建一個從位掩碼返回數字數組(或向量)的函數,我的函數頭為:

vector generateArray(int number, int maskSize)

如果我這樣調用此函數:

generateArray(4,2)

4等於二進制100

它將返回一個具有以下數字的向量:5,6,7,它們位於二進制101,110和111中。因此該函數更改了數字100的所有最后2位以生成所有可能性。

我不知道該怎么做..任何想法都會有很大幫助!

提前致謝

掩碼大小可以認為是生成可以使用maskSize位表示的所有數字的一種方式。 在您的示例中,該位是2或2位,它具有2 2個可能的值:00 01 10 11或0、1、2、3,如果將每個number加到number得到4、5、6和7 。

因此,您要做的就是計算從2 maskSize可以到達的所有數字,並將這些數字添加到“數字”中以填寫您的數組。

這應該可以解決問題-

void generateArray(int n, int m) {
    if (m == 0) {
        printf ("%d\n", n);
        return;
    }
    int mask = 1 << (m-1);
    generateArray(n & ~mask, m-1);
    generateArray(n |  mask, m-1);
}

此C代碼可以打印出數字,但原理是相同的-只需對其進行修改以將其累加到向量中,然后刪除初始參數即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM