C言語初心者です。ビットベクトルを勉強しています。
[0,1,0,0,0,0,1,0,1,...]のような0と1が並んだデータ構造があるとします。
もし、32ビットの領域があれば、32個の0と1の並びを表すことができますよね。
よって、int型の配列a[128]を用意すると、4096個の0と1の並びを表現することができます。
そこで、配列a[128]のnビット番目にビットをたてたあと、その数字を2進数で出力するプログラムをかこうと思いました。以下は配列a[128]のnビット目にビットをたてるところまでかいたプログラムです。最初の配列a[128]の値と、nはscanfで読み込みます。
C
1void set(int n, int a[128]){ 2if(n<=31){ 3a[0]=a[0]|(n<<1); 4} 5else 6unsigned int p=n/32; 7unsigned int q=n%32; 8a[p]=a[p]|(1<<q); 9} 10int main(){ 11 int a[128]; 12 int n; 13 scanf("%d",a); 14 scanf("%d",&n); 15 set(n,a); 16} 17
次は、配列a[128]を2進数(128桁)で表示したいのですが、どのようにかいたら良いのか分からないので、教えてほしいです。また、ここまでのプログラムでおかしな点がありましたら教えていただけるとありがたいです。宜しくお願いします。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。