-4

Turbo C などの 8 ビット コンパイラを考えてみましょう。このコンパイラでは、サイズの整数、たとえば 2 ワード、つまり 16 ビットまたは 2 バイトがあります。3 つの整数値を格納する必要があります。

整数 1 | 0-3 | 2ビット(バイナリで00~11)

整数 2 | 0-5 | 3ビット(2進数で000~101)

イネットガー 3 | 0-7 | 3ビット(2進数で000~111)

これら 3 つの値をすべて格納するには、合計で 8 ビットしか必要ありません。つまり、整数データ型の 1 つの変数には、これらの値を格納するのに十分なメモリがあります。最大で、整数データ型の 2 つのインスタンスのみを使用できるプログラムを開発する必要があります。最初の 1 つは標準入力デバイス (キーボードなど) から値をスキャンする目的で、2 番目はユーザーがフォームに入力したデータを格納するためのものです。上記のように 3 つの整数変数を取得し、データが格納された 2 番目のインスタンスから取得して出力します。

4

1 に答える 1

2

ビットフィールドを使用します:

union X{
  byte byteval;
  struct {
    byte piece1:3;
    byte piece2:3;
    byte piece3:2;
  } pieces;
};

次に、透過的なアクセスがあります:

X a;
a.pieces.piece2=3;
a.byteval;

左右にシフトする必要はありません...コンパイラに任せてください;)

于 2013-07-18T18:32:16.567 に答える