C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

ビット配列を実装するC++プログラム


これは、ビット配列を実装するためのC++プログラムです。ビット配列は、データをコンパクトに格納する配列データ構造です。基本的に、単純なデータ構造を実装するために使用されます。

アルゴリズム

関数と擬似コード:

Begin
   Function getBit(int val,int pos)
   singleBit->b = 0
   if(pos == 0)
      singleBit->b = val & 1
   else
      singleBit->b = ( val & (1 << pos ) ) >> pos
      return singleBit
   Function setBit(BitArr *bt,B *bit,int pos)
      bt->bVal[pos] = bit
      return bt
   Function getVal(BitArr *bArray)
   initialize val = 0
   initialize bVal = 0
   bVal = bArray->bVal[0]->b
   val= val|bVal
   for i = 1 to B_A_LENGTH-1
      bVal = bArray->bVal[i]->b
      bVal =bVal << i
      val=val | bVal
      return val
   done
End.

サンプルコード

#include <iostream>
#include <string>
using namespace std;
#define B_A_LENGTH 4
typedef struct {
   unsigned int b : 1;
} B;
class BitArr {
   private:
   B **bVal;
   public:
   BitArr() {
      bVal = new B* [B_A_LENGTH];
   }
   B *getBit(int val,int pos) {
      B *singleBit = new B;
      singleBit->b = 0;
      if(pos == 0) {
         singleBit->b = val & 1;
      } else {
         singleBit->b = ( val & (1 << pos ) ) >> pos;
      }
      return singleBit;
   }
   BitArr *setBit(BitArr *bt,B *bit,int pos) {
      bt->bVal[pos] = bit;
      return bt;
   }
   int getVal(BitArr *bArray) {
      int val = 0;
      unsigned int bVal = 0;
      bVal = bArray->bVal[0]->b;
      val |= bVal;
      for(int i = 1; i < B_A_LENGTH; i++) {
         bVal = bArray->bVal[i]->b;
         bVal <<= i;
         val |= bVal;
      }
      return val;
   }
};
int main() {
   int v;
   cout<<"Enter 4 bit integer value (0 - 8): ";
   cin>>v;
   BitArr bt, *samplebt;
   samplebt = new BitArr;
   for (int i = 0; i < B_A_LENGTH; i++) {
      samplebt = bt.setBit(samplebt, bt.getBit(v, i), i);
      cout<<"Bit of "<<v<<" at positon "<<i<<": "<<"\n"<<bt.getBit(v, i)->b<<endl;
   }
   cout<<"The value is: "<<bt.getVal(samplebt)<<endl;
   return 0;
}

出力

Enter 4 bit integer value (0 - 8): 6Bit of 6 at positon 0:
0
Bit of 6 at positon 1:
1
Bit of 6 at positon 2:
1
Bit of 6 at positon 3:
0
The value is: 6
>
  1. C++で配列のビットノイズをチェックするプログラム

    N個の整数の配列arr[N]が与えられた場合、タスクは、与えられた配列がバイトニックであるかどうかをチェックすることです。指定されたアレイがバイトニックである場合は、「はい、バイトニックアレイです」と出力します。そうでない場合は、「いいえ、バイトニックアレイではありません」と出力します。 Bitonicアレイとは、アレイが最初に厳密に昇順で、次に厳密に降順である場合です。 この配列のように、arr [] ={1、2、3、4、2、-1、-5}はバイトニック配列です。これは、4までは厳密に昇順であり、4以降は厳密に降順であるためです。 入力 arr[] = {1, 3, 5, 4,

  2. ソートされた配列を実装するC++プログラム

    並べ替えられた配列は、各要素が数値、アルファベット順などの順序で並べ替えられた配列です。バブルの並べ替え、挿入の並べ替え、選択の並べ替え、マージの並べ替え、クイック並べ替えなど、数値の配列を並べ替えるアルゴリズムは多数あります。ヒープソートなど。選択ソートを使用した配列のソートの詳細については、以下を参照してください。 選択ソートは、ソートされた配列を生成するソート方法です。これは、配列内の最小の要素を繰り返し見つけて、ソートされていない部分の先頭にある要素と交換することによって行われます。 選択ソートを使用してソートされた配列を実装するプログラムは次のとおりです。 例 #include&