• ベストアンサー

C言語の質問です。

開いたデバイスやファイルから2バイト読み込んで上位4bitを削除し、残りの12bitを表示することは出来ますでしょうか?できるのであれば具体的にどのような記述をすれば良いのでしょうか?サンプルプログラムなどあると理解しやすく助かります。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

intが16Bitとすると  int nValue;  1.AND演算子なら // ここにInputを記述 // 読んだデータをunsigned char cData1, cData2(上位、下位)とすると nValue = ( (int)cData1 << 8) & 0xff00 | (int)nData2 & 0xff; nValue &= 0xfff;// 16Bitの上位4Bitの強制OFF 2.OR演算子とXOR演算子なら // ここにInputを記述 // 読んだデータをunsigned char cData1, cData2(上位、下位)とすると nValue = ( (int)cData1 << 8) & 0xff00 | (int)nData2 & 0xff; nValue |= 0xf000; // 落としたいBitを強制ONし(この方法は変数にすると汎用にしやすい) nValue ~= 0xf000; // 落としたいBitをXORで強制OFF

その他の回答 (3)

  • katouka09
  • ベストアンサー率50% (130/256)
回答No.3

質問者さんはどの程度のプログラムが作成できるのでしょうか? 1.開いたデバイスやファイルから2バイト読み込むプログラムを作成することはできますか? 2.2バイトのデータをどのように表示させたいのでしょうか?   2進数、10進数、16進数? 3.論理演算を使用したプログラムは作成できますか? 4.2バイトのデータを0xF000でマスクするとどうなりますか?

  • trajaa
  • ベストアンサー率22% (2662/11921)
回答No.2

>残りの12bitを表示することは出来ますでしょうか? どう表示するのですか? ビットの1と0を12個並べる? それとも12bitの値(0~4095)の数字で? それとも、4bit三個を10進または16進で? ところで、上位4bitって各バイト毎の?それとも2バイトの片側? そう言った点を一つ一つ詰めて行かないと、要求されている内容を実現する手段は見つかりませんねぇ。

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

ビット論理積演算で、16bit中の上位4bitをマスクします。 short value, result; /* ここにvalueに値を読み込む処理を入れる */ /* ビットマスク処理 */ result = value & 0x0fff;

関連するQ&A