プロが教えるわが家の防犯対策術!

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

A 回答 (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
    • good
    • 0

質問者さんはどの程度のプログラムが作成できるのでしょうか?



1.開いたデバイスやファイルから2バイト読み込むプログラムを作成することはできますか?
2.2バイトのデータをどのように表示させたいのでしょうか?
  2進数、10進数、16進数?

3.論理演算を使用したプログラムは作成できますか?

4.2バイトのデータを0xF000でマスクするとどうなりますか?
    • good
    • 0

>残りの12bitを表示することは出来ますでしょうか?



どう表示するのですか?

ビットの1と0を12個並べる?

それとも12bitの値(0~4095)の数字で?

それとも、4bit三個を10進または16進で?

ところで、上位4bitって各バイト毎の?それとも2バイトの片側?

そう言った点を一つ一つ詰めて行かないと、要求されている内容を実現する手段は見つかりませんねぇ。
    • good
    • 0

ビット論理積演算で、16bit中の上位4bitをマスクします。



short value, result;
/* ここにvalueに値を読み込む処理を入れる */
/* ビットマスク処理 */
result = value & 0x0fff;
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!