Cでメモリからたとえば1000ビットを予約する最良の方法を教えてください。プログラムを実行していて、フラグ (値 =0 または =1) を管理する必要があります。それを行う最も効率的な方法は何ですか?必要なスペースを確保し、マスクを使用してフラグ (ビット) を制御することを考えていました。ありがとうございました
質問する
1387 次
3 に答える
3
Cでアクセス/アドレス指定できるメモリの最小量は、CHAR_BIT
ビット幅のバイトです(少なくとも8ビット長であることが保証されています)。したがって、パックされた構造を探している場合は、ceil(1000/8)
バイトを使用できます。
ビット操作の詳細については、この SO の質問をご覧ください。
于 2012-06-02T19:47:21.930 に答える
2
bool
次のタイプを使用できます。
#include <stdbool.h> // for bool
#include <stdlib.h> // for malloc
#define N 1000
bool *b = malloc(N * sizeof *b);
// for example to set the 42th element to 1
b[41] = 1;
于 2012-06-02T19:54:50.440 に答える
0
何かのようなもの?
struct bitf
{
unsigned char b:1;
};
struct bitf[1000];
ビットマスクを使用しない場合、最大サイズはコンピューター上の変数の最大サイズです。 1,024 ビット (128 バイト) のビット フィールドを定義しようとしてエラーが発生しました
または最小メモリの場合:
#include <stdio.h>
int main(void)
{
struct bitf
{
unsigned char a:1;
unsigned char b:1;
unsigned char c:1;
unsigned char d:1;
unsigned char e:1;
unsigned char f:1;
unsigned char g:1;
unsigned char h:1;
};
struct bitf number[125];
number[100].a = 1;
number[110].h =1;
printf("size: %d a:%d h:%d\n",sizeof(number), number[100].a ==0, number[110].h ==1);
return 0;
}
出力:
size: 125 a:0 h:1
于 2012-06-02T22:57:22.297 に答える