構造概念を使用してC言語でビットフィールドを説明する
ビットフィールドは、変数のサイズをビット単位で指定するために使用されます。通常、構造内で定義されます。
- ビットフィールド:1バイト=8ビット
たとえば、
例を以下に説明します-
Struct info{ int x:2; };
ここで、xは2ビットを占めています。
範囲外のビットフィールドに値を割り当てることは無効です。
サイズとアドレス演算子はビットフィールドに適用できないため、scanfステートメントを使用してビットフィールドの値を入力することはできません。
ビットフィールドに割り当てることができるデータ型は、int、signed int、unsignedintです。
プログラム
以下は、unsignedint用のCプログラムです。 −
#include<stdio.h> struct info{ unsigned int x:3;// assign bit field to unsigned int inside structure }; main(){ struct info i; i.x=8; printf("%d",i.x); }
出力
出力は次のとおりです&miuns;
0
説明
-
unsigned intの範囲式は、0〜2n-1であり、n=ビット数です。
-
ここで、n =3、つまりunsigned intは0〜23 -1の間にあり、これは0〜7に相当します。
プログラム
intについては以下のプログラムを参照してください −
#include<stdio.h> struct info{ int x:3;// assign bit field to int inside structure }; main(){ struct info i; i.x=4; printf("%d",i.x); }
出力
次の出力が得られます-
-4
説明
- 符号付き整数の範囲式=(-2(n-1)+1)から2n-1、ここでnはビット数ではありません。
- プログラムでは、n =3
- これを数式に代入すると、次の結果が得られます-
=(-2(3-1)+1) to 23-1 =(-22+1) to 22 = -3 to 4 i.e., -3,-2,-1,0,1,2,3,4,
-
ユニオンにC言語でのポインタを説明する
ユニオンはメモリロケーションと呼ばれ、さまざまなデータ型のいくつかの変数によって共有されます。 構文 構文は次のとおりです- union uniontag{ datatype member 1; datatype member 2; ---- ---- datatype member n; }; たとえば、 union sample{ int a; float b; char c; }
-
C言語でのポインタアクセスの概念を説明する
ポインタは、他の変数のアドレスを格納する変数です。 ポインタの宣言、初期化、アクセス 次のステートメントを検討してください- int qty = 179; ポインタの宣言 int *p; 「p」は、別の整数変数のアドレスを保持するポインタ変数です。 ポインタの初期化 アドレス演算子(&)は、ポインタ変数を初期化するために使用されます。 int qty = 175; int *p; p= &qty; 文字列の配列内の要素にアクセスする際にポインタがどのように役立つかの例を考えてみましょう。 このプログラムでは、特定の場所に存在する要素にアクセスしようとしています。操