- ベストアンサー
C言語の質問です。
開いたデバイスやファイルから2バイト読み込んで上位4bitを削除し、残りの12bitを表示することは出来ますでしょうか?できるのであれば具体的にどのような記述をすれば良いのでしょうか?サンプルプログラムなどあると理解しやすく助かります。よろしくお願いします。
- みんなの回答 (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)
質問者さんはどの程度のプログラムが作成できるのでしょうか? 1.開いたデバイスやファイルから2バイト読み込むプログラムを作成することはできますか? 2.2バイトのデータをどのように表示させたいのでしょうか? 2進数、10進数、16進数? 3.論理演算を使用したプログラムは作成できますか? 4.2バイトのデータを0xF000でマスクするとどうなりますか?
- trajaa
- ベストアンサー率22% (2662/11921)
>残りの12bitを表示することは出来ますでしょうか? どう表示するのですか? ビットの1と0を12個並べる? それとも12bitの値(0~4095)の数字で? それとも、4bit三個を10進または16進で? ところで、上位4bitって各バイト毎の?それとも2バイトの片側? そう言った点を一つ一つ詰めて行かないと、要求されている内容を実現する手段は見つかりませんねぇ。
- D-Matsu
- ベストアンサー率45% (1080/2394)
ビット論理積演算で、16bit中の上位4bitをマスクします。 short value, result; /* ここにvalueに値を読み込む処理を入れる */ /* ビットマスク処理 */ result = value & 0x0fff;