0

2 つの UInt16 値があります

private UInt16 leastSignificantWord;
private UInt16 mostSignificantWord;

2 つの単語 (UInt16 値) は、UInt32 ステータス/エラー値を 2 つの単語に分割し、2 つの単語を返すコンポーネントから取得されます。ここで、UInt32 値に戻る必要があります。2 つの単語を合計しても、最も重要な単語と最も重要でない単語が無視されるため、うまくいきません。

例えば:

 private UInt16 leastSignificantWord = 1;
 private UInt16 mostSignificantWord = 1;

//result contains the value 2 after sum both words
//which can not be correct because we have to take note of the most and least significant
UInt32 result = leastSignificantWord  + mostSignificantWord;

これを解決する方法はありますか?正直なところ、私はC#でビット/バイトを扱ったことがないので、そのような問題に直面したことはありませんでした. 前もって感謝します

4

1 に答える 1

3
private UInt16 leastSignificantWord = 1;
private UInt16 mostSignificantWord = 1;

UInt32 result = (leastSignificantWord << 16) + mostSignificantWord;

2 つの UInt16 (16 ビットと 16 ビット) が 10010 1011 1010 1110秒と 2 秒あります1001 0111 0100 0110

この 2 つの UIn16 を 1 つの UInt32 として読み取る場合は、次のようになります。0010 1011 1010 1110 1001 0111 0100 0110

だから、(leastSignificantWord << 16)あなたを与え0010 1011 1010 1110 0000 0000 0000 0000、これはあなたにmostSignificantWord与えます0010 1011 1010 1110 1001 0111 0100 0110

これらは役に立ちます

http://msdn.microsoft.com/en-us/library/a1sway8w.aspx

ビットごとのシフト (ビットシフト) 演算子とは何ですか? また、どのように機能しますか?

于 2013-08-07T13:22:39.687 に答える