0

私は char[16] 配列を持っていて、ユーザーから入力を取得しています: 入力例 - 15、21、23、-1

15、21、および 23 の桁のビット値を「1」に設定する必要があります。-1 はプログラムを終了します。

すべての char[16] 配列は、ビットを表す 0 ~ 127 の値を表します。15、21、および 23 セルに '1' を入力するのに問題があります。

これが私のプログラムです

int temp;
char A[16];
/*Sets all the cells values to o*/
memset(A, 0, 16*sizeof(char));
While (int != -1)
{
    scanf("Enter values from the user:%d", val");
    div = (temp/8);
    mod = (temp%8);
    A[div] |= (mod<<=1);
}

セル 15、21、および 23 の値が「1」に設定されていないという問題。

4

2 に答える 2

2

これを使用して、正しいビットを設定します。

A[div] |= (1<<mod);

関連する質問: 1 つのビットをどのように設定、クリア、トグルしますか?

完全なコード例:

#include <iostream>

int main() {
    unsigned char A[16];
    memset(A, 0, sizeof(A));
    int t;
    std::cin >> t;
    while (t != -1)
    {
        int div = (t/8);
        int mod = (t%8);
        A[div] |= (1<<mod);
        std::cin >> t;
    }
    for(int i = 0; i < 16; ++i) {
        std::cout << (int)A[i] << " ";
    }
    std::cout << std::endl;
    return 0;
}
于 2012-06-10T19:14:13.397 に答える
0

char(if u use char use unsigned.. ) のビットフィールドは定義されていません。 unsigned int を使用してください。または C99ブール型。https://stackoverflow.com/a/3971334/1419494

于 2012-06-10T19:38:42.990 に答える